Thread (1 message) 1 message, 1 author, 2016-06-15

Re: What's cooking in git.git (Jun 2010, #02; Wed, 16)

From: Matthieu Moy <hidden>
Date: 2016-06-15 22:48:59

Junio C Hamano [off-list ref] writes:
Clément Poulain [off-list ref] writes:
quoted
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);
Isn't sign-casting safe? If not, then the existing call to
read_sha1_file should be fixed too:

-file->ptr = read_sha1_file(o->blob_sha1, &type,
-   (unsigned long *)(&(file->size)));
[...]
+file->ptr = read_sha1_file(o->blob_sha1, &type,
+   (unsigned long *)(&(file->size)));

(it's been there for a while)
    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;
This is what the patch does a little later:

+unsigned long buf_len;
[...]
+if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
+    textconv_object(read_from, null_sha1, &buf.buf, &buf_len))
+buf.len = buf_len;

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help