--- ray/src/common/color.c 1991/08/28 08:39:47 1.15 +++ ray/src/common/color.c 1992/06/29 22:40:28 2.3 @@ -39,18 +39,17 @@ unsigned len; fwritecolrs(scanline, len, fp) /* write out a colr scanline */ register COLR *scanline; -int len; +unsigned len; register FILE *fp; { register int i, j, beg, cnt; int c2; - if (len < MINELEN) /* too small to encode */ + if (len < MINELEN | len > 0x7fff) /* OOBs, write out flat */ return(fwrite((char *)scanline,sizeof(COLR),len,fp) - len); - if (len > 32767) /* too big! */ - return(-1); - putc(2, fp); /* put magic header */ + /* put magic header */ putc(2, fp); + putc(2, fp); putc(len>>8, fp); putc(len&255, fp); /* put components seperately */ @@ -98,7 +97,7 @@ register FILE *fp; register int i, j; int code; /* determine scanline type */ - if (len < MINELEN) + if (len < MINELEN | len > 0x7fff) return(oldreadcolrs(scanline, len, fp)); if ((i = getc(fp)) == EOF) return(-1);