From: Junio C Hamano Date: Thu, 17 Jun 2010 23:37:52 GMT Subject: Re: What's cooking in git.git (Jun 2010, #02; Wed, 16) Message-ID: <7vmxut1b8v.fsf@alter.siamese.dyndns.org> In-Reply-To: <0d059f457e2edc87093de2e0ea3c911a@ensimag.fr> Clément Poulain writes: > A fix was proposed here: > http://mid.gmane.org/1276610328-28532-1-git-send-email-axel.bonnet@ensimag.imag.fr This one changes textconv_object() to take a pointer to ulong*; a caller is changed to cast a long* down to that pointer (in fill_origin_blob); that is shifting one type-punned pointer problem to another one, so I do not think it is an improvement. > http://mid.gmane.org/1276617028-5265-1-git-send-email-clement.poulain@ensimag.imag.fr ... and this depends on that. The solution should be along the lines of what Jeff outlined in Message-ID: <20100615110710.GA1682@sigill.intra.peff.net> i.e. The only portable way in C to convert between types is by assignment. So you have to do: unsigned long foo; textconv_object(read_from, null_sha1, &buf.buf, &foo); buf.len = foo;