Work around buggy libm on NetBSD/aarch64.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 25 Aug 2019 19:03:01 +0000 (19:03 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 25 Aug 2019 19:15:03 +0000 (19:15 +0000)
Will be fixed upstream but it doesn't hurt to add one more bit here.

src/runtime/arith.scm

index 36fe945d4e9acb432f4742eb508f42cdd0aede58..453e5e246d9a34d5af3b385dd3b4023737853de4 100644 (file)
@@ -965,9 +965,12 @@ USA.
        ((integer->flonum n #b00)
         => (lambda (x)
              ;; The primitive does not always raise inexact for us,
-             ;; though it does raise overflow.
+             ;; and on some broken libms feraiseexcept clears
+             ;; existing exceptions so explicitly specify overflow.
              (if (not (and (flo:finite? x) (int:= (flo:->integer x) n)))
-                 (flo:raise-exceptions! (flo:exception:inexact-result)))
+                 (flo:raise-exceptions!
+                  (fix:or (flo:exception:overflow)
+                          (flo:exception:inexact-result))))
              x))
        (else
         (flo:raise-exceptions!