Off-by-one error in texk/web2c/pdfetex.p
Albert Chin <[email protected]> Wed, 8 Mar 2006 00:54:26 -0600
| Newsgroups | gmane.comp.tex.tetex.general |
|---|---|
| Message-ID | <[email protected]> |
texk/web2c/pdfetexini.c contains the following ~line 116:
{register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do
mubyteread [i ]= -268435455L ;
while ( i++ < for_end ) ;}
{register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do
mubytewrite [i ]= 0 ;
while ( i++ < for_end ) ;}
{register integer for_end; i = 0 ;for_end = 128 ; if ( i <= for_end) do
mubytecswrite [i ]= -268435455L ;
while ( i++ < for_end ) ;}
sizeof(mubyteread) = 256.
sizeof(mubytewrite) = 256.
sizeof(mubytecswrite) = 128.
The loop for mubyteread and mubytewrite is correct. However, for
mubytecswrite, you overwrite mubytecswrite[0] .. mubytecswrite[128].
You really want to overwrite mubytecswrite[0] .. mubytecswrite[127].
Seems like pdfetex.p is wrong. It declares mubytecswrite as:
mubytecswrite:array[0..127]of halfword;mubyteskip:integer;
but overwrites the array:
for i:=0 to 128 do mubytecswrite[i]:=-268435455;mubytekeep:=0;
--
albert chin ([email protected])