aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorPaul Eggert2011-04-06 20:34:05 -0700
committerPaul Eggert2011-04-06 20:34:05 -0700
commit5fdb398c4b75b0c834aff7132f90b0ce5317a25a (patch)
tree29ebb8fc5700fefdd867fa497eac27fb7d0bcfe0 /src/window.c
parentb189fa667ed7ac7b17f9665cd8a0c26316b3c521 (diff)
downloademacs-5fdb398c4b75b0c834aff7132f90b0ce5317a25a.tar.gz
emacs-5fdb398c4b75b0c834aff7132f90b0ce5317a25a.zip
error: Print 32- and 64-bit integers portably (Bug#8435).
Without this change, on typical 64-bit hosts error ("...%d...", N) was used to print both 32- and 64-bit integers N, which relied on undefined behavior. * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd): New macro. * lisp.h (error, verror): Mark as printf-like functions. * eval.c (verror): Use vsnprintf, not doprnt, to do the real work. Report overflow in size calculations when allocating printf buffer. Do not truncate output string at its first null byte. * xdisp.c (vmessage): Use vsnprintf, not doprnt, to do the real work. Truncate the output at a character boundary, since vsnprintf does not do that. * charset.c (check_iso_charset_parameter): Convert internal character to string before calling 'error', since %c now has the printf meaning. * coding.c (Fdecode_sjis_char, Fdecode_big5_char): Avoid int overflow when computing char to be passed to 'error'. Do not pass Lisp_Object to 'error'; pass the integer instead. * nsfns.m (Fns_do_applescript): Use int, not long, since it's formatted with plain %d.
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/window.c b/src/window.c
index 5ca46dd3316..ebfd1b0f778 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3804,7 +3804,7 @@ See Info node `(elisp)Splitting Windows' for more details and examples. */)
3804 error ("Window height %d too small (after splitting)", size_int); 3804 error ("Window height %d too small (after splitting)", size_int);
3805 if (size_int + window_safe_height > XFASTINT (o->total_lines)) 3805 if (size_int + window_safe_height > XFASTINT (o->total_lines))
3806 error ("Window height %d too small (after splitting)", 3806 error ("Window height %d too small (after splitting)",
3807 XFASTINT (o->total_lines) - size_int); 3807 (int) (XFASTINT (o->total_lines) - size_int));
3808 if (NILP (o->parent) 3808 if (NILP (o->parent)
3809 || NILP (XWINDOW (o->parent)->vchild)) 3809 || NILP (XWINDOW (o->parent)->vchild))
3810 { 3810 {
@@ -3821,7 +3821,7 @@ See Info node `(elisp)Splitting Windows' for more details and examples. */)
3821 error ("Window width %d too small (after splitting)", size_int); 3821 error ("Window width %d too small (after splitting)", size_int);
3822 if (size_int + window_safe_width > XFASTINT (o->total_cols)) 3822 if (size_int + window_safe_width > XFASTINT (o->total_cols))
3823 error ("Window width %d too small (after splitting)", 3823 error ("Window width %d too small (after splitting)",
3824 XFASTINT (o->total_cols) - size_int); 3824 (int) (XFASTINT (o->total_cols) - size_int));
3825 if (NILP (o->parent) 3825 if (NILP (o->parent)
3826 || NILP (XWINDOW (o->parent)->hchild)) 3826 || NILP (XWINDOW (o->parent)->hchild))
3827 { 3827 {