aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2022-07-27 17:39:14 +0800
committerPo Lu2022-07-27 17:42:30 +0800
commitbfa951cdfad482a106bed11e4f11cedfad58570a (patch)
tree97cbf7e4921baebf4cfd9932823a9f04c8238fae
parent8be5481b8ed869e1ac04c07c3919a9a49afd8667 (diff)
downloademacs-bfa951cdfad482a106bed11e4f11cedfad58570a.tar.gz
emacs-bfa951cdfad482a106bed11e4f11cedfad58570a.zip
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)
-rw-r--r--src/print.c5
1 files changed, 2 insertions, 3 deletions
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;
98 or call strout to output a block of characters. */ 98 or call strout to output a block of characters. */
99 99
100#define PRINTPREPARE \ 100#define PRINTPREPARE \
101 struct buffer *old = current_buffer; \
102 ptrdiff_t old_point = -1, start_point = -1; \ 101 ptrdiff_t old_point = -1, start_point = -1; \
103 ptrdiff_t old_point_byte = -1, start_point_byte = -1; \ 102 ptrdiff_t old_point_byte = -1, start_point_byte = -1; \
104 specpdl_ref specpdl_count = SPECPDL_INDEX (); \ 103 specpdl_ref specpdl_count = SPECPDL_INDEX (); \
@@ -106,6 +105,7 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1;
106 bool multibyte \ 105 bool multibyte \
107 = !NILP (BVAR (current_buffer, enable_multibyte_characters)); \ 106 = !NILP (BVAR (current_buffer, enable_multibyte_characters)); \
108 Lisp_Object original = printcharfun; \ 107 Lisp_Object original = printcharfun; \
108 record_unwind_current_buffer (); \
109 if (NILP (printcharfun)) printcharfun = Qt; \ 109 if (NILP (printcharfun)) printcharfun = Qt; \
110 if (BUFFERP (printcharfun)) \ 110 if (BUFFERP (printcharfun)) \
111 { \ 111 { \
@@ -192,8 +192,7 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1;
192 SET_PT_BOTH (old_point + (old_point >= start_point \ 192 SET_PT_BOTH (old_point + (old_point >= start_point \
193 ? PT - start_point : 0), \ 193 ? PT - start_point : 0), \
194 old_point_byte + (old_point_byte >= start_point_byte \ 194 old_point_byte + (old_point_byte >= start_point_byte \
195 ? PT_BYTE - start_point_byte : 0)); \ 195 ? PT_BYTE - start_point_byte : 0));
196 set_buffer_internal (old);
197 196
198/* This is used to restore the saved contents of print_buffer 197/* This is used to restore the saved contents of print_buffer
199 when there is a recursive call to print. */ 198 when there is a recursive call to print. */