~ 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