mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-18 20:00:36 -08:00
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'.
This commit is contained in:
parent
4ffd0d6b56
commit
e6c3da2065
13 changed files with 165 additions and 83 deletions
|
|
@ -9071,7 +9071,7 @@ Return the corresponding code in SJIS. */)
|
|||
charset_list = CODING_ATTR_CHARSET_LIST (attrs);
|
||||
charset = char_charset (c, charset_list, &code);
|
||||
if (code == CHARSET_INVALID_CODE (charset))
|
||||
error ("Can't encode by shift_jis encoding: %d", c);
|
||||
error ("Can't encode by shift_jis encoding: %c", c);
|
||||
JIS_TO_SJIS (code);
|
||||
|
||||
return make_number (code);
|
||||
|
|
@ -9142,7 +9142,7 @@ Return the corresponding character code in Big5. */)
|
|||
charset_list = CODING_ATTR_CHARSET_LIST (attrs);
|
||||
charset = char_charset (c, charset_list, &code);
|
||||
if (code == CHARSET_INVALID_CODE (charset))
|
||||
error ("Can't encode by Big5 encoding: %d", c);
|
||||
error ("Can't encode by Big5 encoding: %c", c);
|
||||
|
||||
return make_number (code);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue