[comp.sys.mac.programmer] Problems spooling a picture to a file

sas@giza.cis.ohio-state.edu (Scott Sutherland) (03/21/91)

Regarding spooling a picture to a file, Inside Mac V, p. 89 gives an example
that includes the following var and a procedure that replaces the standard 
PutPicProc and does the actual spooling to disk:

--------------------------------------------------------

var 
  PICTcount: Longint;  {the current size of the picture}

...

procedure PutPICTData;
  var
   longCount: Longint;
   err: Integer;

 begin
  longCount := byteCount;
  PICTcount := PICTcount + byteCount;
  err := FSWrite(globalRef, longCount, dataPtr);
  if newPICThand <> nil then
   newPictHand^^.picSize := PICTcount;
 end;

--------------------------------------------------------

Playing around with it, I found that it does not work when the size of the
PICT is greater than 32K.  This is so because in the following line:

   newPictHand^^.picSize := PICTcount;

PICTcount will end up being greater than 32000, and so newPictHand^^.picSize
will overflow because it is an integer.

To fix it, I changed the line to :
   newPictHand^^.picSize := LoWord(PICTcount);

and it seems to work fine since according to IM V-87, picSize is the low
order 16 bits of the picture size in version 2 pictures.  The REAL question
is whether I've overlooked anything?  Anyone had to deal with this?

Thanks in advance,
Scott

---
Scott A. Sutherland    Internet:scott@dance.ohio-state.edu; AT&T Mail:!scottas
Staff Macintosh Developer                 Phone: 614/292-7977; Fax 614/292-0939
The Ohio State University, Department of Dance