TurboC++ v1.00 bug/patch
AKA Solitair
berg at cip-s07.informatik.rwth-aachen.de
Mon Nov 26 22:01:52 AEST 1990
Patches for TC++ v1.00
To fix the case statement. It behaved uncorrectly for unsigned ints bigger
than 0x7fff. This error was in both the C and the C++ part, in both
tcc.exe and tc.exe. Since I only needed tcc.exe for the project, I
only have fixed that one; as a side effect, the recipe patch for the
C++ part also works on tc.exe.
To check if your compiler still has the bug, run the following program:
-----------------------------------------------------------------------
#include <stdio.h>
main(){unsigned i;
i=0x4000;i<<=1;
switch(i){
case 0x1000:i=1;break;
case 0x2000:i=2;break;
case 0x8000:i=3;break;
case 0x4000:i=4;break;}
printf("If %u!=3 then there definitely is a bug.\n",i);}
-----------------------------------------------------------------------
The patch is as follows:
offset: old new (only for tcc.exe, the command line version)
24595: 06 16 Fixes C compiler part.
24596: 9C 9A
24598: 7C 7E
2459A: 7F EB
35BB1: 8E EB Fixes C++ compiler part.
35BB2: 06 1A
35BBE: 46 56
35BBF: FC FA
35BC0: 7C 7E
35BC2: 75 EB
35BC3: 05 28
35BDD: 0E D7
35BE2: 09 D2
Or as a recipe (use this if the offsets, or values don't match exactly):
(??= don't care; ..= old value; xx,yy,zz have to be copied)
Find the following string in tcc.exe (C compiler part):
26 8b 45 04 26 8b 55 02 3b 06 ?? ?? 7c 0c 7f 06 3b 16 xx yy 76 04 33 ff eb 0e
Substitute by:
.. .. .. .. .. .. .. .. .. 16 xx yy 7e .. eb
Find the following string in tcc.exe or tc.exe (C++ compiler part):
26 8b 3d 0b ff 74 18 8e 06 ?? ?? 26 8b 45 04 26 8b 55 02 3b 46 ?? 7c e1 75 05
3b 56 zz 72 da 0b ff 74 1f 8e 06 ?? ?? 26 8b 45 04 26 8b 55 02 3b 46 ?? 75 0e
3b 56 ?? 75 09
Substitute by:
.. .. .. .. .. .. .. eb 1a .. .. .. .. .. .. .. .. .. .. .. 56 zz 7e .. eb 28
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. d7
.. .. .. .. d2
--
Sincerely, berg%cip-s01.informatik.rwth-aachen.de at unido.bitnet
Stephen R. van den Berg.
"I code it in 5 min, optimize it in 90 min, because it's so well optimized:
it runs in only 5 min. Actually, most of the time I optimize programs."
More information about the Alt.sources
mailing list