From: Po Lu Date: Wed, 27 Jul 2022 09:39:14 +0000 (+0800) Subject: Fix invalid current buffer after print-unreadable-function signals X-Git-Tag: emacs-29.0.90~1447^2~730 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bfa951cdfad482a106bed11e4f11cedfad58570a;p=emacs.git Fix invalid current buffer after print-unreadable-function signals * src/print.c (PRINTPREPARE): Remove `old' and record_unwind_current_buffer instead. (PRINTFINISH): Stop restoring `old'. (bug#56773) --- diff --git a/src/print.c b/src/print.c index b5a621f80aa..6218c76224c 100644 --- a/src/print.c +++ b/src/print.c @@ -98,7 +98,6 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1; or call strout to output a block of characters. */ #define PRINTPREPARE \ - struct buffer *old = current_buffer; \ ptrdiff_t old_point = -1, start_point = -1; \ ptrdiff_t old_point_byte = -1, start_point_byte = -1; \ specpdl_ref specpdl_count = SPECPDL_INDEX (); \ @@ -106,6 +105,7 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1; bool multibyte \ = !NILP (BVAR (current_buffer, enable_multibyte_characters)); \ Lisp_Object original = printcharfun; \ + record_unwind_current_buffer (); \ if (NILP (printcharfun)) printcharfun = Qt; \ if (BUFFERP (printcharfun)) \ { \ @@ -192,8 +192,7 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1; SET_PT_BOTH (old_point + (old_point >= start_point \ ? PT - start_point : 0), \ old_point_byte + (old_point_byte >= start_point_byte \ - ? PT_BYTE - start_point_byte : 0)); \ - set_buffer_internal (old); + ? PT_BYTE - start_point_byte : 0)); /* This is used to restore the saved contents of print_buffer when there is a recursive call to print. */