]> Repositorios git - scryer-prolog.git/commitdiff
type check for ~d and ~D specifiers
authorMarkus Triska <[email protected]>
Sun, 7 Jun 2020 22:07:24 +0000 (00:07 +0200)
committerMarkus Triska <[email protected]>
Sun, 7 Jun 2020 22:09:55 +0000 (00:09 +0200)
src/prolog/lib/format.pl

index d91fdc91a073506c77cd095cf9896af4c372e185..e8be4df3ad56e85e7bbb262f92944f64a615f5f5 100644 (file)
@@ -172,9 +172,11 @@ cells([~,a|Fs], [Arg|Args], Tab, Es) --> !,
         { atom_chars(Arg, Chars) },
         cells(Fs, Args, Tab, [chars(Chars)|Es]).
 cells([~|Fs0], Args0, Tab, Es) -->
-        { numeric_argument(Fs0, Num, [d|Fs], Args0, [Arg|Args]) },
+        { numeric_argument(Fs0, Num, [d|Fs], Args0, [Arg0|Args]) },
         !,
-        { format_number_chars(Arg, Cs0) },
+        { Arg is Arg0, % evaluate compound expression
+          must_be(integer, Arg),
+          number_chars(Arg, Cs0) },
         (   { Num =:= 0 } -> { Cs = Cs0 }
         ;   { length(Cs0, L),
               (   L =< Num ->