]> git.eshelyaron.com Git - emacs.git/commitdiff
*print.c (Fexternal_debugging_output): Use more-conservative overflow fix.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 24 Oct 2011 23:06:11 +0000 (16:06 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 24 Oct 2011 23:06:11 +0000 (16:06 -0700)
src/ChangeLog
src/print.c

index c288ed6a2ed8470a63c67a79192d59dd0f31d4d9..5b41db9831ae7f95c950cadb27dbd2587e7069b8 100644 (file)
        Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
        (PRINTPREPARE): Use int, not ptrdiff_t, where int is wide enough.
        (printchar, strout): Use xpalloc to catch size calculation overflow.
-       (Fexternal_debugging_output): Use CHECK_CHARACTER, not CHECK_NUMBER,
-       to avoid mishandling large integers.
+       (Fexternal_debugging_output): Don't overflow EMACS_INT->int conversion.
        (print_error_message): Use SAFE_ALLOCA, not alloca.
        (print_object): Use int, not EMACS_INT, where int is wide enough.
        * process.c (Fdelete_process): Don't assume pid fits into EMACS_INT.
index 63ef3e6279e8f174216d96841d59fd4f6ec8ab26..f3302daaea344b5b91f9cf08e4b99c3352fded1c 100644 (file)
@@ -716,8 +716,8 @@ You can call print while debugging emacs, and pass it this function
 to make it write to the debugging output.  */)
   (Lisp_Object character)
 {
-  CHECK_CHARACTER (character);
-  putc ((int) XINT (character), stderr);
+  CHECK_NUMBER (character);
+  putc (XINT (character) & 0xFF, stderr);
 
 #ifdef WINDOWSNT
   /* Send the output to a debugger (nothing happens if there isn't one).  */