~ 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" bufTrap