[PATCH 2/5] don't die immediately when convert an invalid type name
From: Liu Yubao <hidden>
Date: 2016-06-15 22:45:43
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Liu Yubao <redacted> --- 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