[Git][cmucl/cmucl][master] Disable FP traps when printing arithmetic-error messages
Raymond Toy
rtoy at common-lisp.net
Sun Dec 27 18:16:50 UTC 2015
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
0fc0061b by Raymond Toy at 2015-12-27T10:16:45Z
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.
- - - - -
1 changed file:
- src/code/error.lisp
Changes:
=====================================
src/code/error.lisp
=====================================
--- a/src/code/error.lisp
+++ b/src/code/error.lisp
@@ -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) ())
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/0fc0061b5302f516f051a599685b8be575535643
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20151227/9dedbc29/attachment.html>
More information about the cmucl-cvs
mailing list