~ chicken-core (chicken-5) be47ffb9f49fab84c64522d22db6aed7c7b67aa0


commit be47ffb9f49fab84c64522d22db6aed7c7b67aa0
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Nov 4 12:38:46 2017 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sat Nov 4 12:38:46 2017 +0100

    set-pseudo-random-seed!: check for negative "n"

diff --git a/extras.scm b/extras.scm
index e3ecad8c..10e1bf0c 100644
--- a/extras.scm
+++ b/extras.scm
@@ -649,10 +649,10 @@
 (import scheme chicken chicken.time chicken.io foreign)
 
 (define (set-pseudo-random-seed! buf #!optional n)
-  ;; doesn't enforce size of buf being at least 4 bytes
-  (if n
-      (##sys#check-fixnum n 'set-pseudo-random-seed!)
-      (set! n (##sys#size buf)))
+  (cond (n (##sys#check-fixnum n 'set-pseudo-random-seed!)
+           (when (##core#inline "C_fixnum_lessp" n 0)
+             (##sys#error 'set-pseudo-random-seed! "invalid size" n)))
+        (else (set! n (##sys#size buf))))
   (unless (##core#inline "C_byteblockp" buf)
     (##sys#error 'set-pseudo-random-seed! "invalid buffer type" buf))
   (##core#inline "C_set_random_seed" buf
Trap