Skip to content
Snippets Groups Projects
Commit 0fc0061b authored by Raymond Toy's avatar Raymond Toy
Browse files

Disable FP traps when printing arithmetic-error messages

Printing of FP numbers can signal some traps like overflow, underflow,
inexact, or denormalized-operand, so we need to disable these traps
when printing out the error message for arithmetic errors.
parent 507f6d9e
No related branches found
No related tags found
No related merge requests found
......@@ -1138,9 +1138,14 @@
(format stream (intl:gettext "Arithmetic error ~S signalled.")
(type-of condition))
(when (arithmetic-error-operation condition)
(format stream (intl:gettext "~%Operation was ~S, operands ~S.")
(arithmetic-error-operation condition)
(arithmetic-error-operands condition))))))
;; Printing the operands can signal these FP traps, so
;; disable them while we're printing out the error
;; message.
(with-float-traps-masked (:overflow :underflow :inexact
#+x86 :denormalized-operand)
(format stream (intl:gettext "~%Operation was ~S, operands ~S.")
(arithmetic-error-operation condition)
(arithmetic-error-operands condition)))))))
(define-condition division-by-zero (arithmetic-error) ())
(define-condition floating-point-overflow (arithmetic-error) ())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment