X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Frandom.lisp;fp=src%2Frandom.lisp;h=a1f16bb0fe929f10840e6459f2ea83db4675f4fc;hb=ff6eb7fc9763ef77df2336250d49c78780ab4676;hp=d9c4d2b987ea3a7536ba627d7d3e64ab2cdcd747;hpb=503a35c263e4799597e656da5ae088fc678ece48;p=fiveam.git diff --git a/src/random.lisp b/src/random.lisp index d9c4d2b..a1f16bb 100644 --- a/src/random.lisp +++ b/src/random.lisp @@ -151,12 +151,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 - (code-char (funcall code)) + (if alphanumericp (loop + for count upfrom 0 for char = (code-char (funcall code)) until (alphanumericp char) - finally (return 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))))) (defun gen-string (&key (length (gen-integer :min 0 :max 80)) (elements (gen-character))