Pārlūkot izejas kodu

* Fixed multiplying negative tBCD values

git-svn-id: trunk@17744 -
joost 14 gadi atpakaļ
vecāks
revīzija
96ec37aa92
3 mainītis faili ar 16 papildinājumiem un 0 dzēšanām
  1. 1 0
      .gitattributes
  2. 1 0
      rtl/objpas/fmtbcd.pp
  3. 14 0
      tests/tbs/tb0575.pp

+ 1 - 0
.gitattributes

@@ -9108,6 +9108,7 @@ tests/tbs/tb0571.pas svneol=native#text/plain
 tests/tbs/tb0572.pp svneol=native#text/plain
 tests/tbs/tb0573.pp svneol=native#text/plain
 tests/tbs/tb0574.pp svneol=native#text/pascal
+tests/tbs/tb0575.pp svneol=native#text/plain
 tests/tbs/tb205.pp svneol=native#text/plain
 tests/tbs/ub0060.pp svneol=native#text/plain
 tests/tbs/ub0069.pp svneol=native#text/plain

+ 1 - 0
rtl/objpas/fmtbcd.pp

@@ -2100,6 +2100,7 @@ writeln;
               bhr.Singles[FDig] := ue MOD 10;
               ue := ue DIV 10;
              end;
+          bhr.neg := bh1.Neg XOR bh2.Neg;
           bhr.Plac := LDig;
           bhr.FDig := FDig;
           if LDig > high ( bhr.Singles )

+ 14 - 0
tests/tbs/tb0575.pp

@@ -0,0 +1,14 @@
+{$mode objfpc}{$H+}
+
+uses
+  FmtBCD;
+
+var
+  bcd: tbcd;
+  li: integer;
+begin
+  bcd := -100;
+  li := bcd * 2;
+  if li<>-200 then
+    Halt(1);
+end.