michael 27 years ago
parent
commit
61d9e05f90
2 changed files with 33 additions and 0 deletions
  1. 31 0
      bugs/bug0152.pp
  2. 2 0
      bugs/readme.txt

+ 31 - 0
bugs/bug0152.pp

@@ -0,0 +1,31 @@
+Program bug0152;
+
+{
+  Shows wrong evaluation of loop boundaries. First end boundary must
+  be calculated, only then Loop variable should be initialized.
+  Change loop variable to J to see what should be the correct output.
+}
+
+PROCEDURE LGrow(VAR S : String;C:CHAR;Count:WORD);
+  
+ VAR  I,J :WORD;
+    
+BEGIN
+  I:=ORD(S[0]);           { Keeping length in local data eases optimalisations}
+  IF I<Count THEN
+     BEGIN
+     Move(S[1],S[Count-I+1],I);
+     FOR I:=1 TO Count-I DO
+       S[I]:=C;
+     S[0]:=CHR(Count);
+     END;
+END;
+ 
+Var S : string; 
+                                 
+begin
+  s:='abcedfghij';
+  writeln ('s : ',s);
+  lgrow (s,'1',17);  
+  writeln ('S : ',s);
+end.

+ 2 - 0
bugs/readme.txt

@@ -201,3 +201,5 @@ bug0148.pp   crash when setting function result of a declared but not yet
 bug0149.pp   (a, b) compile bug0149b twice and you'll get a crash
 bug0150.pp   Shows that the assert() macro is missing under Delphi.
 bug0151.pp   crash when using undeclared variable in with-statement
+bug0152.pp   End value of loop variable must be calculated before loop
+             variable is initialized.