浏览代码

* fixes #40438 signed zero handling.

marcoonthegit 2 年之前
父节点
当前提交
7d4cecda0b
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      packages/rtl-extra/src/inc/real48utils.pp

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

@@ -69,7 +69,10 @@ begin
 
   { copy 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 }
   rrec.S := drec.S;