format: Signal errors when colinc and mincol are not positive integers.
authorStas Boukarev <stassats@gmail.com>
Fri, 13 Apr 2012 17:02:43 +0000 (21:02 +0400)
committerStas Boukarev <stassats@gmail.com>
Fri, 13 Apr 2012 17:04:33 +0000 (21:04 +0400)
Various directives have colinc and mincol parameters, which should be
> 0 and >= 0 respectively.

src/code/target-format.lisp
tests/print.impure.lisp

index 52c5b07..7ed2b55 100644 (file)
 ;;;; format interpreters and support functions for simple output
 
 (defun format-write-field (stream string mincol colinc minpad padchar padleft)
+  (when (and colinc (<= colinc 0))
+    (error 'format-error
+           :complaint "The value of colinc is ~a, should be a positive integer"
+           :args (list colinc)))
+  (when (and mincol (< mincol 0))
+    (error 'format-error
+           :complaint "The value of mincol is ~a, should be a non-negative integer"
+           :args (list mincol)))
   (unless padleft
     (write-string string stream))
   (dotimes (i minpad)
index 7261f62..5ab865c 100644 (file)
                     (assert (equal (row-major-aref a i) (row-major-aref copy i)))))))))
         :next))))
 
+(with-test (:name (:format :negative-colinc-and-mincol))
+  (assert (raises-error? (format nil "~-2a" 1)))
+  (assert (raises-error? (format nil "~,0a" 1))))
+
 ;;; success