From: Stas Boukarev Date: Fri, 13 Apr 2012 17:02:43 +0000 (+0400) Subject: format: Signal errors when colinc and mincol are not positive integers. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;ds=sidebyside;h=b894cb41d869bda6ba0c54a491becc7bb58375c1;p=sbcl.git format: Signal errors when colinc and mincol are not positive integers. Various directives have colinc and mincol parameters, which should be > 0 and >= 0 respectively. --- diff --git a/src/code/target-format.lisp b/src/code/target-format.lisp index 52c5b07..7ed2b55 100644 --- a/src/code/target-format.lisp +++ b/src/code/target-format.lisp @@ -170,6 +170,14 @@ ;;;; 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) diff --git a/tests/print.impure.lisp b/tests/print.impure.lisp index 7261f62..5ab865c 100644 --- a/tests/print.impure.lisp +++ b/tests/print.impure.lisp @@ -631,4 +631,8 @@ (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