Fix stupid bug in gen-character
authorMarco Baringer <mb@bese.it>
Thu, 26 Jan 2006 12:04:26 +0000 (13:04 +0100)
committerMarco Baringer <mb@bese.it>
Thu, 26 Jan 2006 12:04:26 +0000 (13:04 +0100)
src/random.lisp

index d9c4d2b..a1f16bb 100644 (file)
@@ -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))