# HG changeset patch # User Eli Zaretskii # Date 1154688134 0 # Node ID 698c7a5192bec7864939807472cea5ec7121ec50 # Parent 436c014d941cf7a1105a8c0d05052b6a9d01aa23 (Formatting Strings): Warn against arbitrary strings as first arg to `format'. diff -r 436c014d941c -r 698c7a5192be lispref/strings.texi --- a/lispref/strings.texi Fri Aug 04 02:50:10 2006 +0000 +++ b/lispref/strings.texi Fri Aug 04 10:42:14 2006 +0000 @@ -701,7 +701,6 @@ The characters in @var{string}, other than the format specifications, are copied directly into the output; if they have text properties, -these are copied into the output also. @end defun @cindex @samp{%} in format @@ -719,6 +718,17 @@ @end group @end example + Since @code{format} interprets @samp{%} characters as format +specifications, you should @emph{never} pass an arbitrary string as +the first argument. This is particularly true when the string is +generated by some Lisp code. Unless the string is @emph{known} to +never include any @samp{%} characters, pass @code{"%s"}, described +below, as the first argument, and the string as the second, like this: + +@example + (format "%s" @var{arbitrary-string}) +@end example + If @var{string} contains more than one format specification, the format specifications correspond to successive values from @var{objects}. Thus, the first format specification in @var{string}