Reply by Thomas Richter●November 23, 20072007-11-23
John Costella schrieb:
> Thanks, mate; I've tried to break it but my resources are limited.
> (Would be much easier if my name was Bill Gates, but then
> everyone would be throwing things at me.) Could you send me
> the image that killed it? (Or are you telling me that it dies for all
> images with that build?)
Pretty any image does that, see below for what I believe the problem is.
> (Incidentally, that not-very-useful error tree actually says that the
> program thought it ran out of memory, but that must be a bug;
> I assume that s.bmp isn't some humungous image that won't
> fit in memory...)
>
> Does the Windows executable fail on the same image?
No idea, no windows here.
Update to the update: It works with the -m32 switch, which means you
need to check the following issues:
"long" is not 32bit. It is what the compiler assigns to it. If you need
32 bit, int32_t is what you want, or an autoconfig script. For linux and
gcc, "long" is 64 bit.
Pointers aren't 32bit wide either. If you convert from a pointer to an
integer or back, make sure the corresponding integer type is wide
enough. ptrdiff_t for example, is wide enough to hold the difference
between any two pointers, so this might be the thing to check.
HTHH,
Thomas