From 2471df9ba18ee7d99501190c8df95f387f0b1f25 Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Wed, 13 Jul 2005 17:16:40 +0000 Subject: [PATCH] Ignore any errors we get from computing a bound and pretend we got a NIL, which means unbounded. Fixes ansi-test misc.89b, which was calling coerce on an integer that was too big to fit in a single-float. --- compiler/srctran.lisp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp index 08ace655d..cd6f22936 100644 --- a/compiler/srctran.lisp +++ b/compiler/srctran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.157 2005/07/12 18:23:26 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.158 2005/07/13 17:16:40 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -305,11 +305,14 @@ ;; With these traps masked, we might get things like infinity or ;; negative infinity returned. Check for this and return NIL to ;; indicate unbounded. - (let ((y (funcall f (bound-value x)))) + ;; + ;; We also ignore any errors that funcall might cause and + ;; return NIL instead to indicate infinity. + (let ((y (ignore-errors (funcall f (bound-value x))))) (if (and (floatp y) (float-infinity-p y)) nil - (set-bound (funcall f (bound-value x)) (consp x))))))) + (set-bound y (consp x))))))) ;;; Apply a binary operator OP to two bounds X and Y. The result is NIL if ;;; either is NIL. Otherwise bound is computed and the result is open if -- GitLab