Re: [PATCH v2] Detailed diagnosis when parsing an object name fails.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 7, 2009, 07:27 UTC
- Message-ID
- <7vk4wz9rbt.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <vpqhbs4dkjr.fsf@bauges.imag.fr>
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
The second round still had a few compilation warnings (turned to errors in my environment) so I fixed them up somewhat. I stopped before getting a clean compile, though---you will still get:
sha1_name.c: In function 'get_sha1_with_mode_1': sha1_name.c:956: error: 'object_name' may be used uninitialized in this function
even with this fix-up.
Show 6 quoted lines
>> Instead of doing a leaky allocation, it may make sense to pass the tree >> object name as <const char *, size_t> pair, and print it with "%.*s" in >> the error reporting codepath. After all, object_name is used only for >> that purpose in diagnose_invalid_sha1_path(), no? > > matter of taste,...
I thought generally it is accepted that I had a better taste on this list? ;-)
-- squashed --
cache.h | 4 ++-- sha1_name.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/cache.h b/cache.h index 952bd51..3f9ee86 100644 --- a/cache.h +++ b/cache.h @@ -702,11 +702,11 @@ static inline unsigned int hexval(unsigned char c) #define DEFAULT_ABBREV 7 extern int get_sha1(const char *str, unsigned char *sha1); -static inline get_sha1_with_mode(const char *str, unsigned char *sha1, unsigned *mode) +extern int get_sha1_with_mode_1(const char *str, unsigned char *sha1, unsigned *mode, int gently, const char *prefix); +static inline int get_sha1_with_mode(const char *str, unsigned char *sha1, unsigned *mode) { return get_sha1_with_mode_1(str, sha1, mode, 1, NULL); } -extern int get_sha1_with_mode_1(const char *str, unsigned char *sha1, unsigned *mode, int gently, const char *prefix); extern int get_sha1_hex(const char *hex, unsigned char *sha1); extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */ extern int read_ref(const char *filename, unsigned char *sha1); diff --git a/sha1_name.c b/sha1_name.c index 1bc09ac..025244a 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -807,7 +807,7 @@ int get_sha1(const char *name, unsigned char *sha1) /* Must be called only when object_name:filename doesn't exist. */ static void diagnose_invalid_sha1_path(const char *prefix, const char *filename, - const char *tree_sha1, + const unsigned char *tree_sha1, const char *object_name) { struct stat st;