~ chicken-core (chicken-5) b6703169f41146603c9f7e3bf374dada6e7f2815


commit b6703169f41146603c9f7e3bf374dada6e7f2815
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Wed Jan 13 08:43:19 2021 +0100
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Thu Jan 14 16:59:18 2021 +1300

    Add second optional argument for scheme#log to types database.
    
    Also add a (minor) specialization for this case.
    
    Fixes #1725
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/NEWS b/NEWS
index 0ef6b0b8..ed90ec42 100644
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,7 @@
   - The default mode for files created by `file-open' has been changed
     to 0666 (plus whatever change the effective umask applies), rather
     than 0744 (see #1698).
+  - Fixed type database entry for "log" with second arg (fixes #1725).
 
 - Runtime system
   - Sleeping primordial thread doesn't forget mutations made to
diff --git a/types.db b/types.db
index f8fb0bd5..587a081f 100644
--- a/types.db
+++ b/types.db
@@ -512,10 +512,11 @@
 (scheme#exp (#(procedure #:clean #:enforce #:foldable) scheme#exp (number) (or float cplxnum))
 	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1))))
 
-(scheme#log (#(procedure #:clean #:enforce #:foldable) scheme#log (number) (or float cplxnum))
+(scheme#log (#(procedure #:clean #:enforce #:foldable) scheme#log (number #!optional number) (or float cplxnum))
 	    ;; Unfortunately this doesn't work when the argument is negative
 	    ;;((float) (float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1)))
-	    ((*) (##sys#log-1 #(1))))
+	    ((*) (##sys#log-1 #(1)))
+	    ((* *) (##sys#/-2 (##sys#log-1 #(1)) (##sys#log-1 #(2)))))
 
 (scheme#expt (#(procedure #:clean #:enforce #:foldable) scheme#expt (number number) number)
 	     ;; This breaks in some extreme edge cases... Worth disabling?
Trap