Thread (1 message) 1 message, 1 author, 2018-05-11

Re: [PATCH] fast-export: avoid NULL pointer arithmetic

From: Junio C Hamano <hidden>
Date: 2018-05-11 02:16:10

René Scharfe [off-list ref] writes:
quoted
But it somehow feels backwards in spirit to me, as the reason why we
use "void *" there in the decoration field is because we expect that
we'd have a pointer to some struture most of the time, and we have
to occasionally store a small integer there.
Yes, fast-export seems to be the only place that stores an integer as
a decoration.
With the decoration subsystem that might be the case, but I think
we have other codepaths where "void * .util" field in the structure
is used to store (void *)1, expecting that a normal allocation will
never yield a pointer that is indistinguishable from that value.
Using struct decorate in fast-export has the benefit of not
requiring separate allocations for individual entries.  Switching to
struct hashmap would require individual allocations.  Adding a
custom clone of decorate with a uint32_t payload would be an option.
As long as we know uint32_t is no wider than uintptr_t, your patch
should be safe, shouldn't it?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help