aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorEli Zaretskii2022-12-16 16:29:51 +0200
committerEli Zaretskii2022-12-16 16:29:51 +0200
commit89f54e81576d9d9e35b67e7c5831495c4bb444c5 (patch)
treeb9782b823780065473c9b5660e6f8c3ea4554c17 /src/buffer.c
parent1b9ca1e5e646cdd678f0d29ef5e833c8ff2298c5 (diff)
downloademacs-89f54e81576d9d9e35b67e7c5831495c4bb444c5.tar.gz
emacs-89f54e81576d9d9e35b67e7c5831495c4bb444c5.zip
A better fix for bug#60096
* lisp/startup.el (initial-scratch-message): * lisp/simple.el (get-scratch-buffer-create): Revert last changes. * src/window.c (Fset_window_configuration): Force recalculation of Vwindow_list after restoring the windows. * src/buffer.c (other_buffer_safely): Make sure we always return a valid buffer, even if 'get-scratch-buffer-create' signals an error.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 9a30faa0e1a..443f90ff894 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1747,7 +1747,18 @@ other_buffer_safely (Lisp_Object buffer)
1747 if (candidate_buffer (buf, buffer)) 1747 if (candidate_buffer (buf, buffer))
1748 return buf; 1748 return buf;
1749 1749
1750 return safe_call (1, Qget_scratch_buffer_create); 1750 /* This function must return a valid buffer, since it is frequently
1751 our last line of defense in the face of the expected buffers
1752 becoming dead under our feet. safe_call below could return nil
1753 if recreating *scratch* in Lisp, which does some fancy stuff,
1754 signals an error in some weird use case. */
1755 buf = safe_call (1, Qget_scratch_buffer_create);
1756 if (NILP (buf))
1757 {
1758 AUTO_STRING (scratch, "*scratch*");
1759 buf = Fget_buffer_create (scratch, Qnil);
1760 }
1761 return buf;
1751} 1762}
1752 1763
1753DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo, 1764DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo,