john@xanth.UUCP (03/24/87)
There is a bug in the System V port of ARC 5.12; in the gocode()
function of arclzw.c, getc_unp(), which returns an int, is called, and
the return value is assigned to an unsigned. The result of this is
then checked against EOF. The new Sun C compiler loudly complains
(with a verbose, 3-line, warning message for each assignment).
ANSI-compliant C compilers will likely complain as well (at least for
libraries where EOF == -1 !).
The fixes are below, in context diff form, suitable for patching.
*** /tmp/,RCSt1a03521 Tue Mar 24 14:38:19 1987
--- arclzw.c Tue Mar 24 14:37:53 1987
***************
*** 674,680
static INT gocode(fd) /* read in a twelve bit code */
FILE *fd; /* file to get code from */
{
! unsigned INT localbuf, returnval;
if(inbuf==EMPTY) /* if on a code boundary */
{ if((localbuf=getc_unp(fd))==EOF) /* get start of next code */
--- 674,680 -----
static INT gocode(fd) /* read in a twelve bit code */
FILE *fd; /* file to get code from */
{
! INT localbuf, returnval, intemp;
if(inbuf==EMPTY) /* if on a code boundary */
{ if((localbuf=getc_unp(fd))==EOF) /* get start of next code */
***************
*** 680,688
{ if((localbuf=getc_unp(fd))==EOF) /* get start of next code */
return EOF; /* pass back end of file status */
localbuf &= 0xFF; /* mask down to true byte value */
! if((inbuf=getc_unp(fd))==EOF) /* get end of code, start of next */
! return EOF; /* this should never happen */
! inbuf &= 0xFF; /* mask down to true byte value */
returnval = ((localbuf<<4)&0xFF0) + ((inbuf>>4)&0x00F);
inbuf &= 0x000F; /* leave partial code pending */
--- 680,688 -----
{ if((localbuf=getc_unp(fd))==EOF) /* get start of next code */
return EOF; /* pass back end of file status */
localbuf &= 0xFF; /* mask down to true byte value */
! if((intemp=getc_unp(fd))==EOF) /* get end of code, start of next */
! {inbuf=intemp; return EOF;} /* this should never happen */
! inbuf = intemp & 0xFF; /* mask down to true byte value */
returnval = ((localbuf<<4)&0xFF0) + ((inbuf>>4)&0x00F);
inbuf &= 0x000F; /* leave partial code pending */
--
John Owens Old Dominion University - Norfolk, Virginia, USA
john@ODU.EDU old arpa: john%odu.edu@RELAY.CS.NET
+1 804 440 3915 old uucp: {seismo,harvard,sun,hoptoad}!xanth!john