From b894cb41d869bda6ba0c54a491becc7bb58375c1 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Fri, 13 Apr 2012 21:02:43 +0400 Subject: [PATCH] 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. --- src/code/target-format.lisp | 8 ++++++++ tests/print.impure.lisp | 4 ++++ 2 files changed, 12 insertions(+) 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 -- 1.7.10.4