Browse Source

* fixes #40438 signed zero handling.

marcoonthegit 1 year ago
parent
commit
d3ac7f1d26
1 changed files with 4 additions and 1 deletions
  1. 4 1
      packages/rtl-extra/src/inc/real48utils.pp

+ 4 - 1
packages/rtl-extra/src/inc/real48utils.pp

@@ -71,7 +71,10 @@ begin
 
 
   { copy exponent }
   { copy exponent }
   { correct exponent: }
   { correct exponent: }
-  rrec.E := drec.E - 1023 + 129;
+  if drec.E<>0 then  
+    rrec.E := drec.E - 1023 + 129
+  else
+    rrec.E:=0;         // signed zero exception.  Note E=2047=inf.
 
 
   { set sign }
   { set sign }
   rrec.S := drec.S;
   rrec.S := drec.S;