Subject: Re: [PATCH/RFC] Fix some warnings (on cygwin) to allow -Werror

From: Ramsay Jones <[email-masked]>
Date: Sat, 05 Jul 2008 21:35:59 +0100

Junio C Hamano wrote:
> Ramsay Jones <[email-masked]> writes:
> 
>> Despite the subject line, this should be useful on any system for
>> which uint32_t is defined to be unsigned long rather than
>> unsigned int. (and where the return type of htonl() is similarly
>> defined).
> 
> Correct.  Perhaps "Use %PRIu32 and such to print integers of fixed length"?
> 
> The only worry I have with this patch is with systems with not-so-ANSI
> headers; as you noticed, we already have:
> 
>         #ifndef PRIuMAX
>         #define PRIuMAX "llu"
>         #endif
> 
> in git-compat-util.h, which does include <inttypes.h>, so PRIu32 and
> friends could be problematic on these platforms.
> 

Yes, I had the same worry, since I did not know which system(s) required
the above #ifdef and, perhaps more important, why.  Having said that, I
suspect (hope?) that the affected system(s) are somewhat rare.  I guess
it would not be long before someone complained otherwise...

[Note: I can't just blame the above #ifdef because I don't have a real
git repo ;-) - it would simply blame me!]

>> @@ -1718,7 +1720,8 @@ static int add_ref_tag(const char *path, const unsigned char *sha1, int flag, vo
>>  static void prepare_pack(int window, int depth)
>>  {
>>  	struct object_entry **delta_list;
>> -	uint32_t i, n, nr_deltas;
>> +	uint32_t i, nr_deltas;
>> +	unsigned n;
> 
> Hmm.  Is this change necessary?
> 

Yes, otherwise:

builtin-pack-objects.c: In function `prepare_pack':
builtin-pack-objects.c:1760: warning: passing arg 2 of `find_deltas' from incompatible pointer type
make: *** [builtin-pack-objects.o] Error 1

Note that ll_find_deltas() is #defined to find_deltas() in the #else arm
of #ifdef THREADED_DELTA_SEARCH, and find_deltas() takes an "unsigned *"

ATB,

Ramsay Jones