~ chicken-core (chicken-5) cb91806626e81bfdebb3917fa779ec3922673672


commit cb91806626e81bfdebb3917fa779ec3922673672
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Wed Mar 3 07:48:46 2021 +0100
Commit:     Mario Domenech Goulart <mario@parenteses.org>
CommitDate: Sat Mar 6 11:14:07 2021 +0100

    Fix numerator and denominator error handling (fixes #1730)
    
    Signed-off-by: Mario Domenech Goulart <mario@parenteses.org>

diff --git a/NEWS b/NEWS
index ed90ec42..18c225c5 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 5.2.1
 
 - Core libraries
+  - Fixed an inadvertant error during error reporting in the `numerator`
+    and `denominator` procedures when passed non-finite flonums (#1730).
   - Fixed a bug where optimisations for `irregex-match?` would cause
     runtime errors due to the inlined specialisations not being
     fully-expanded (see #1690).
diff --git a/library.scm b/library.scm
index 208d29c4..95e5797b 100644
--- a/library.scm
+++ b/library.scm
@@ -1789,7 +1789,7 @@ EOF
   (lambda (n)
     (cond ((exact-integer? n) n)
 	  ((##core#inline "C_i_flonump" n)
-	   (cond ((not (finite? n)) (bad-inexact 'numerator n))
+	   (cond ((not (finite? n)) (##sys#error-bad-inexact n 'numerator))
 		 ((##core#inline "C_u_i_fpintegerp" n) n)
 		 (else (exact->inexact (numerator (inexact->exact n))))))
 	  ((ratnum? n) (%ratnum-numerator n))
@@ -1801,7 +1801,7 @@ EOF
   (lambda (n)
     (cond ((exact-integer? n) 1)
 	  ((##core#inline "C_i_flonump" n)
-	   (cond ((not (finite? n)) (bad-inexact 'denominator n))
+	   (cond ((not (finite? n)) (##sys#error-bad-inexact n 'denominator))
 		 ((##core#inline "C_u_i_fpintegerp" n) 1.0)
 		 (else (exact->inexact (denominator (inexact->exact n))))))
 	  ((ratnum? n) (%ratnum-denominator n))
Trap