Browse Source

+ bug #138
- bug #100,#125

peter 27 years ago
parent
commit
0c7763b059
2 changed files with 40 additions and 4 deletions
  1. 35 0
      bugs/bug0138.pp
  2. 5 4
      bugs/readme.txt

+ 35 - 0
bugs/bug0138.pp

@@ -0,0 +1,35 @@
+{program p; uncomment for a crash}
+type
+  tpt=^tpo;
+  tpo=object
+    constructor init;
+    procedure pi1;
+    procedure pi2;
+  end;
+constructor tpo.init;
+begin
+end;
+procedure tpo.pi1;
+begin
+end;
+procedure tpo.pi2;
+begin
+end;
+procedure crushesi;assembler;
+asm
+        movl %eax,%esi
+end ['EAX','ESI'];
+var
+  p1 : tpt;
+begin
+  p1:=new(tpt,init);
+  with p1^ do
+   begin
+     pi1;
+     crushesi;  { After this the %esi should be reloaded from the tempvariable }
+     pi1;
+   end;
+{ There is here already a tempvar for %esi, why not use it here too ? }
+  p1^.pi2;
+  p1^.pi2;
+end.

+ 5 - 4
bugs/readme.txt

@@ -113,6 +113,7 @@ Fixed bugs:
   bug0098.pp   File type casts are not allowed (works in TP7)        OK 0.99.1 (FK)
   bug0098.pp   File type casts are not allowed (works in TP7)        OK 0.99.1 (FK)
   bug0099.pp   wrong assembler code is genereatoed for range check   OK 0.99.1 (?)
   bug0099.pp   wrong assembler code is genereatoed for range check   OK 0.99.1 (?)
                (at least under 0.99.0)
                (at least under 0.99.0)
+  bug0100.pp   a unit may only occure once in uses                   OK 0.99.6 (PM)
   bug0101.pp   no type checking for routines in interfance and       OK 0.99.1 (CEC)
   bug0101.pp   no type checking for routines in interfance and       OK 0.99.1 (CEC)
                 implementation
                 implementation
   bug0102.pp   page fault when trying to compile under ppcm68k       OK 0.99.1
   bug0102.pp   page fault when trying to compile under ppcm68k       OK 0.99.1
@@ -128,12 +129,13 @@ Fixed bugs:
   bug0115.pp   missing writeln for comp data type                    OK 0.99.6 (FK)
   bug0115.pp   missing writeln for comp data type                    OK 0.99.6 (FK)
   bug0116.pp   when local variable size is > $ffff, enter can't be   OK 0.99.1 (FK)
   bug0116.pp   when local variable size is > $ffff, enter can't be   OK 0.99.1 (FK)
                used to create the stack frame, but it is with -Og
                used to create the stack frame, but it is with -Og
-  bug0117.pp   internalerror 17 (and why is there an automatic float OK 0.99.6 (FK) 
+  bug0117.pp   internalerror 17 (and why is there an automatic float OK 0.99.6 (FK)
                conversion?)
                conversion?)
   bug0118.pp   Procedural vars cannot be assigned nil ?              OK 0.99.6 (FK)
   bug0118.pp   Procedural vars cannot be assigned nil ?              OK 0.99.6 (FK)
   bug0119.pp   problem with methods                                  OK 0.99.6 (FK)
   bug0119.pp   problem with methods                                  OK 0.99.6 (FK)
-  bug0121.pp   cardinal -> byte conversion not work (and crashes)    OK 0.99.6 (FK) 
+  bug0121.pp   cardinal -> byte conversion not work (and crashes)    OK 0.99.6 (FK)
   bug0122.pp   exit() gives a warning that the result is not set     OK 0.99.6 (??)
   bug0122.pp   exit() gives a warning that the result is not set     OK 0.99.6 (??)
+  bug0125.pp   wrong colors with DOS CRT unit                        OK 0.99.6 (PFV)
   bug0126.pp   packed array isn't allowed                            OK 0.99.6 (FK)
   bug0126.pp   packed array isn't allowed                            OK 0.99.6 (FK)
   bug0128.pp   problem with ^[                                       OK 0.99.6 (PFV)
   bug0128.pp   problem with ^[                                       OK 0.99.6 (PFV)
   bug0129.pp   endless loop with while/continue                      OK 0.99.6 (FK)
   bug0129.pp   endless loop with while/continue                      OK 0.99.6 (FK)
@@ -167,7 +169,6 @@ bug0083.pp   shows missing "dynamic" set constructor
 bug0090.pp   shows PChar comparison problem
 bug0090.pp   shows PChar comparison problem
 bug0091.pp   missing standard functions in constant expressions
 bug0091.pp   missing standard functions in constant expressions
 bug0096.pp   problem with objects as parameters
 bug0096.pp   problem with objects as parameters
-bug0100.pp   a unit may only occure once in uses
 bug0103.pp   problems with boolean typecasts (other type)
 bug0103.pp   problems with boolean typecasts (other type)
 bug0107.pp   shows page fault problem (run in TRUE DOS mode)
 bug0107.pp   shows page fault problem (run in TRUE DOS mode)
 bug0110.pp   SigSegv when using undeclared var in Case
 bug0110.pp   SigSegv when using undeclared var in Case
@@ -175,7 +176,6 @@ bug0111.pp   blockread(typedfile,...) is not allowed in TP7
 bug0120.pp   inc/dec(enumeration) doesn't work
 bug0120.pp   inc/dec(enumeration) doesn't work
 bug0123.pp   problem with intel assembler (shrd)
 bug0123.pp   problem with intel assembler (shrd)
 bug0124.pp   problem with -Rintel switch and indexing (whatever the order)
 bug0124.pp   problem with -Rintel switch and indexing (whatever the order)
-bug0125.pp   wrong colors with DOS CRT unit
 bug0127.pp   problem with cdecl in implementation part
 bug0127.pp   problem with cdecl in implementation part
 bug0130.pp   in [..#255] problem
 bug0130.pp   in [..#255] problem
 bug0131.pp   internal error 10 with highdimension arrays
 bug0131.pp   internal error 10 with highdimension arrays
@@ -184,3 +184,4 @@ bug0133.pp   object type declaration not 100% compatibile with TP7
 bug0135.pp   Unsupported subrange type construction.
 bug0135.pp   Unsupported subrange type construction.
 bug0136.pp   No types necessary in the procedure header
 bug0136.pp   No types necessary in the procedure header
 bug0137.pp   Cannot assign child object variable to parent objcet type variable
 bug0137.pp   Cannot assign child object variable to parent objcet type variable
+bug0138.pp   with object^ do bug, %esi is not reloaded when it should