]> git.eshelyaron.com Git - emacs.git/commitdiff
Do not allow to set major mode for a dead buffer.
authorDmitry Antipov <dmantipov@yandex.ru>
Tue, 28 Aug 2012 10:59:17 +0000 (14:59 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Tue, 28 Aug 2012 10:59:17 +0000 (14:59 +0400)
* buffer.c (Fset_buffer_major_mode): Signal an error
if the buffer is dead.
(Fother_buffer, other_buffer_safely): Remove redundant
nested declaration.

src/ChangeLog
src/buffer.c

index 889c8efebdbb8434a1a61022d6408b1f7cef70bb..1040b93fe70c92c3e7831f49c882915d466505e8 100644 (file)
@@ -1,3 +1,11 @@
+2012-08-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not allow to set major mode for a dead buffer.
+       * buffer.c (Fset_buffer_major_mode): Signal an error
+       if the buffer is dead.
+       (Fother_buffer, other_buffer_safely): Remove redundant
+       nested declaration.
+
 2012-08-28  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Always use set_buffer_if_live to restore original buffer at unwind.
index 61ec736ad1a8d3c41566d2f498a012c31247b281..0e2e50d9f51630aab2e21fb125f43e74c3b3a903 100644 (file)
@@ -1553,7 +1553,6 @@ list first, followed by the list of all buffers.  If no other buffer
 exists, return the buffer `*scratch*' (creating it if necessary).  */)
   (register Lisp_Object buffer, Lisp_Object visible_ok, Lisp_Object frame)
 {
-  Lisp_Object Fset_buffer_major_mode (Lisp_Object buffer);
   Lisp_Object tail, buf, pred;
   Lisp_Object notsogood = Qnil;
 
@@ -1624,7 +1623,6 @@ exists, return the buffer `*scratch*' (creating it if necessary).  */)
 Lisp_Object
 other_buffer_safely (Lisp_Object buffer)
 {
-  Lisp_Object Fset_buffer_major_mode (Lisp_Object buffer);
   Lisp_Object tail, buf;
 
   tail = Vbuffer_alist;
@@ -2064,8 +2062,10 @@ the current buffer's major mode.  */)
 
   CHECK_BUFFER (buffer);
 
-  if (STRINGP (BVAR (XBUFFER (buffer), name))
-      && strcmp (SSDATA (BVAR (XBUFFER (buffer), name)), "*scratch*") == 0)
+  if (NILP (BVAR (XBUFFER (buffer), name)))
+    error ("Attempt to set major mode for a dead buffer");
+
+  if (strcmp (SSDATA (BVAR (XBUFFER (buffer), name)), "*scratch*") == 0)
     function = find_symbol_value (intern ("initial-major-mode"));
   else
     {