X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Frandom.lisp;fp=src%2Frandom.lisp;h=f46d3ba77fc1ac1001ceefe0e214e09b588fd4de;hb=037999f6c29bbb66aabaa85c8c46c21e20a897c1;hp=53f423b53da6a85b38702d318405354a43e9061b;hpb=47e54369152b69e10aa6b6e60ad9ccb68deb00b0;p=fiveam.git diff --git a/src/random.lisp b/src/random.lisp index 53f423b..f46d3ba 100644 --- a/src/random.lisp +++ b/src/random.lisp @@ -200,16 +200,16 @@ CODE must be a generator of random integers. ALPHANUMERICP, if non-NIL, limits the returned chars to those which pass alphanumericp." (lambda () - (if alphanumericp - (loop - for count upfrom 0 - for char = (code-char (funcall code)) - until (alphanumericp char) - when (= 1000 count) - do (error "After 1000 iterations ~S has still not generated an alphanumeric character :(." - code) - finally (return char)) - (code-char (funcall code))))) + (loop + for count upfrom 0 + for char = (code-char (funcall code)) + until (and char + (or (not alphanumericp) + (alphanumericp char))) + when (= 1000 count) + do (error "After 1000 iterations ~S has still not generated ~:[a valid~;an alphanumeric~] character :(." + code alphanumericp) + finally (return char)))) (defun gen-string (&key (length (gen-integer :min 0 :max 80)) (elements (gen-character))