2
0
Эх сурвалжийг харах

* fixed crash when writing a currency value with a specified number
of fractional digits in case it's not the last value of the
write(ln) statement (mantis #10920)

git-svn-id: trunk@10421 -

Jonas Maebe 17 жил өмнө
parent
commit
d80d3f36d2

+ 1 - 0
.gitattributes

@@ -8004,6 +8004,7 @@ tests/webtbs/tw10890.pp svneol=native#text/plain
 tests/webtbs/tw10897.pp svneol=native#text/plain
 tests/webtbs/tw1090.pp svneol=native#text/plain
 tests/webtbs/tw1092.pp svneol=native#text/plain
+tests/webtbs/tw10920.pp svneol=native#text/plain
 tests/webtbs/tw1096.pp svneol=native#text/plain
 tests/webtbs/tw1097.pp svneol=native#text/plain
 tests/webtbs/tw1103.pp svneol=native#text/plain

+ 3 - 1
compiler/ninl.pas

@@ -604,7 +604,9 @@ implementation
                           fracpara.right := ccallparanode.create(
                               cordconstnode.create(ord(tfloatdef(para.left.resultdef).floattype),
                               s32inttype,true),nil);
-                        end;
+                        end
+                      else
+                        fracpara.right:=nil;
                     end;
                   if para.left.resultdef.typ=enumdef then
                     begin

+ 18 - 0
tests/webtbs/tw10920.pp

@@ -0,0 +1,18 @@
+program bug_fmtcurrncy;
+//  If write/writeln parameter list includes any item FOLLOWING a 
+//     currency variable with format specs, the compiler throws
+//     an Access violation exception.
+
+var
+  V: currency;    // currency blows up,  all other real types are Ok
+
+BEGIN
+  V := 34567;
+
+  write( V:0:2, 'x' );   // This form produces the error
+
+  write( V:0:2 );        // This equivalent form compiles Ok
+  writeln( 'x' );
+
+END.
+