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