On Sat, Feb 08, 2014 at 10:49:40AM +0100, David Kastrup wrote: > But please note that since sb->lineno originally comes from a zeroed > memory area and is passed to xrealloc, this requires that after > > int *p; > memset(&p, 0, sizeof(p)); > > the equivalence > > ((void *)p == NULL) > > will hold. While this is true on most platforms, and while the C > standard guarantees the slightly different > ((void *)0 == NULL) > is true, it makes no statement concerning the memory representation of > the NULL pointer. > > I have not bothered addressing this non-compliance with the C standard > as it would be polishing a turd. A wholesale replacement has already > been proposed, and it's likely that this assumption is prevalent in the > Git codebase elsewhere anyway. Yes, we explicitly break this part of the standard in the name of practicality (it simplifies frequently-used code, and machines on which it matters are rare enough that nobody has ever complained about it). So I do not think this is a problem. However, is there a reason not to use: sizeof(*sb->lineno) rather than sizeof(int) to avoid type-mismatch errors entirely (this applies both to this patch, and to any proposed rewrites using malloc). -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html