Excellent work Brian!

Bill.

2010/1/5 Cactus <rieman...@googlemail.com>:
>
>
> On Jan 5, 7:11 pm, Bill Hart <goodwillh...@googlemail.com> wrote:
>> I doubt it. In the test code you have:
>>
>> ASSERT_ALWAYS (putc ((size >> (j*8)) & 0xFF, fp) != EOF);
>>
>> should that 0xFF be 0xFFLL or something like that on Windows?
>
> I found the bug - its in lines 80-82 in inp_raw.c
>
>  if (sizeof (csize) > 4 && csize & 0x80000000L)
>    csize -= 0x80000000L << 1;
>
> This is intended to sign extend csize if it is longer than 4 bytes.
> But the constant is a 32-bit value so shifting it left 1 is makes it
> zero.
>
> So the sign extension fails. It needs to be coerced to an mp_size_t
> before shifting and then OR'd in (or equivalent):
>
>  if (sizeof (csize) > 4 && csize & 0x80000000L)
>    csize |= ((mp_size_t)0x80000000l) < 1
>
>      Brian
>
> --
> You received this message because you are subscribed to the Google Groups 
> "mpir-devel" group.
> To post to this group, send email to mpir-de...@googlegroups.com.
> To unsubscribe from this group, send email to 
> mpir-devel+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/mpir-devel?hl=en.
>
>
>
>
-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-de...@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.


Reply via email to