Signed-off-by: Liu Yubao <yubao.liu@xxxxxxxxx> --- object.c | 14 +++++++++++++- object.h | 1 + sha1_file.c | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/object.c b/object.c index 50b6528..0a18db6 100644 --- a/object.c +++ b/object.c @@ -33,13 +33,25 @@ const char *typename(unsigned int type) return object_type_strings[type]; } -int type_from_string(const char *str) +int type_from_string_gently(const char *str) { int i; for (i = 1; i < ARRAY_SIZE(object_type_strings); i++) if (!strcmp(str, object_type_strings[i])) return i; + + return -1; +} + +int type_from_string(const char *str) +{ + int i; + + i = type_from_string_gently(str); + if (i > 0) + return i; + die("invalid object type \"%s\"", str); } diff --git a/object.h b/object.h index d962ff1..88baf2b 100644 --- a/object.h +++ b/object.h @@ -36,6 +36,7 @@ struct object { }; extern const char *typename(unsigned int type); +extern int type_from_string_gently(const char *str); extern int type_from_string(const char *str); extern unsigned int get_max_object_index(void); diff --git a/sha1_file.c b/sha1_file.c index efe6967..dccc455 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1291,7 +1291,7 @@ static int parse_sha1_header(const char *hdr, unsigned long length, unsigned lon /* * The length must be followed by a zero byte */ - return *hdr ? -1 : type_from_string(type); + return *hdr ? -1 : type_from_string_gently(type); } static void *unpack_sha1_file(void *map, unsigned long mapsize, enum object_type *type, unsigned long *size, const unsigned char *sha1) -- 1.6.1.rc1.5.gde86c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html