Re: [PATCH] hash: Remove useless init_hash()
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Jul 27, 2010, 19:58 UTC
- Message-ID
- <AANLkTikHLZlBQW8DSZrxeA-RDOh2Iy6hc0p821tDQoN8@mail.gmail.com>
- In-Reply-To
- <20100727194946.GA11682@coredump.intra.peff.net>
On Tue, Jul 27, 2010 at 19:49, Jeff King <peff@peff.net> wrote:
Show 21 quoted lines
> On Tue, Jul 27, 2010 at 10:36:09AM +0000, Ævar Arnfjörð Bjarmason wrote:
>
>> >> -static inline void init_hash(struct hash_table *table)
>> >> -{
>> >> - table->size = 0;
>> >> - table->nr = 0;
>> >> - table->array = NULL;
>> >> -}
>> >
>> > *This* could be replaced by memset.
>>
>> No it couldn't? The second argument to memset is just an int, so
>> setting the memory area to 0 isn't portable to systems where the
>> representation of NULL isn't "0".
>>
>> (It's early so I may be misremembering my C..)
>
> You're remembering your C correctly. It isn't portable, but it is so
> unlikely on modern machines that we simply don't care (and you will see
> memsets zero-ing pointers like this all through the git code, so this is
> certainly not introducing anything new).Thanks for the confirmation. I was aware that NULL != 0 only occured on long-dead architechtures, but I suspected that some compiler out there would whine if it could statically determine that you were reading in a memzero'd area and using it as NULL. Evidently not, or at least nobody's complained.
> That being said, I agree with the comments that removing init_hash > actually makes the code _less_ readable. You could just replace these > three lines with a memset, but why? It's just code churn.
Yeah, and for the record it also missed this part in hash.c:
void free_hash(struct hash_table *table)
{
free(table->array);
table->array = NULL;
table->size = 0;
table->nr = 0;
}Have fun everyone :)