On Thu, Nov 16, 2006 at 11:18:47PM +0100, Steinar H. Gunderson wrote:
> Well, it sure sounds like an endianness problem to me.

Looks like I was right. src/txtrmap.C, line 218:

  fread(&map_w,sizeof(map_w),1,f);
  fread(&map_h,sizeof(map_h),1,f);
  fread(&n,sizeof(n),1,f);

Fixing this specific case is of course trivial; just replace it by

  unsigned char tmp[4];

  fread(tmp, 4, 1, f);
  map_w = tmp[0] | (tmp[1] << 8) | (tmp[2] << 16) | (tmp[3] << 24);

  fread(tmp, 4, 1, f);
  map_h = tmp[0] | (tmp[1] << 8) | (tmp[2] << 16) | (tmp[3] << 24);

  fread(tmp, 4, 1, f);
  n = tmp[0] | (tmp[1] << 8) | (tmp[2] << 16) | (tmp[3] << 24);

but there are at least 8-10 more of these cases, and also the same in fwrite
form. Basically, this doesn't seem to be endian-clean at all; given that the
package has been in Debian since at least woody and nobody has cared, perhaps
not all that big of a loss? (IOW: Perhaps it should simply be requested
removed for big-endian architectures?)

/* Steinar */
-- 
Homepage: http://www.sesse.net/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to