Fix doprnt so it could be used safely in `verror'. (Bug#8435)
authorEli Zaretskii <eliz@gnu.org>
Sat, 23 Apr 2011 10:33:28 +0000 (13:33 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 23 Apr 2011 10:33:28 +0000 (13:33 +0300)
commite6c3da2065ac72cc4e1a2bef22d367cd75401892
tree1f6fcbee1e12f63096d2221a89f5436b831862a9
parent4ffd0d6b569d252e4e807d4e9c9d6a5bd5b08640
Fix doprnt so it could be used safely in `verror'.  (Bug#8435)

 src/doprnt.c: Include limits.h.
 (SIZE_MAX): New macro.
 (doprnt): Return a size_t value.  2nd arg is now size_t.  Many
 local variables are now size_t instead of int or unsigned.
 Improve overflow protection.  Support `l' modifier for integer
 conversions.  Support %l conversion.  Don't assume an EMACS_INT
 argument for integer conversions and for %c.
 src/lisp.h (doprnt): Restore prototype.
 src/makefile.w32-in ($(BLD)/callint.$(O)): Depend on
 $(SRC)/character.h.
 src/Makefile.in (base_obj): Add back doprnt.o.
 src/deps.mk (doprnt.o): Add back prerequisites.
 (callint.o): Depend on character.h.
 src/eval.c (internal_lisp_condition_case): Include the handler
 representation in the error message.
 (verror): Call doprnt instead of vsnprintf.  Fix an off-by-one bug
 when breaking from the loop.
 src/xdisp.c (vmessage): Call doprnt instead of vsnprintf.
 src/callint.c (Fcall_interactively): When displaying error message
 about invalid control letter, pass the character's codepoint, not
 a pointer to its multibyte form.  Improve display of the character
 in octal and display also its hex code.
 src/character.c (char_string): Use %x to display the (unsigned)
 codepoint of an invalid character, to avoid displaying a bogus
 negative value.
 src/font.c (check_otf_features): Pass SDATA of SYMBOL_NAME to
 `error', not SYMBOL_NAME itself.
 src/coding.c (Fencode_sjis_char, Fencode_big5_char): Use %c for
 character arguments to `error'.
 src/charset.c (check_iso_charset_parameter): Fix incorrect argument
 to `error' in error message about FINAL_CHAR argument.  Make sure
 FINAL_CHAR is a character, and use %c when it is passed as
 argument to `error'.
13 files changed:
src/ChangeLog
src/Makefile.in
src/callint.c
src/character.c
src/charset.c
src/coding.c
src/deps.mk
src/doprnt.c
src/eval.c
src/font.c
src/lisp.h
src/makefile.w32-in
src/xdisp.c