From: Eli Zaretskii Date: Mon, 4 Mar 2024 12:59:27 +0000 (+0200) Subject: Avoid crashes due to base-less indirect buffer X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=68aebd39e83750333d2152950f9f83f6b4b99e18;p=emacs.git Avoid crashes due to base-less indirect buffer * src/buffer.c (Fkill_buffer): Prevent killing a buffer if its indirect buffer refuses to be killed. (Bug#69529) (cherry picked from commit 0df3dc3d46fe7848aabb3ca5ff7085ca59799f43) --- diff --git a/src/buffer.c b/src/buffer.c index 126f3eb055a..9f55a8813fa 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1971,8 +1971,16 @@ cleaning up all windows currently displaying the buffer to be killed. */) Lisp_Object tail, other; FOR_EACH_LIVE_BUFFER (tail, other) - if (XBUFFER (other)->base_buffer == b) - Fkill_buffer (other); + { + struct buffer *obuf = XBUFFER (other); + if (obuf->base_buffer == b) + { + Fkill_buffer (other); + if (BUFFER_LIVE_P (obuf)) + error ("Unable to kill buffer whose indirect buffer `%s' cannot be killed", + SDATA (BVAR (obuf, name))); + } + } /* Exit if we now have killed the base buffer (Bug#11665). */ if (!BUFFER_LIVE_P (b))