emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog mail/rmail.el


From: Glenn Morris
Subject: [Emacs-diffs] emacs/lisp ChangeLog mail/rmail.el
Date: Sat, 03 Oct 2009 02:07:33 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       09/10/03 02:07:32

Modified files:
        lisp           : ChangeLog 
        lisp/mail      : rmail.el 

Log message:
        (rmail-generate-viewer-buffer): Be more careful about reusing existing
        buffers, in case we happen to visit two files with the same basename.
        (Bug#4593)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16330&r2=1.16331
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/mail/rmail.el?cvsroot=emacs&r1=1.552&r2=1.553

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16330
retrieving revision 1.16331
diff -u -b -r1.16330 -r1.16331
--- ChangeLog   2 Oct 2009 19:53:53 -0000       1.16330
+++ ChangeLog   3 Oct 2009 02:07:28 -0000       1.16331
@@ -1,3 +1,9 @@
+2009-10-03  Glenn Morris  <address@hidden>
+
+       * mail/rmail.el (rmail-generate-viewer-buffer): Be more careful about
+       reusing existing buffers, in case we happen to visit two files with the
+       same basename.  (Bug#4593)
+
 2009-10-02  Eli Zaretskii  <address@hidden>
 
        * makefile.w32-in (update-subdirs-CMD): Add cedet to

Index: mail/rmail.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/mail/rmail.el,v
retrieving revision 1.552
retrieving revision 1.553
diff -u -b -r1.552 -r1.553
--- mail/rmail.el       26 Sep 2009 19:21:07 -0000      1.552
+++ mail/rmail.el       3 Oct 2009 02:07:32 -0000       1.553
@@ -1294,11 +1294,15 @@
 (defun rmail-generate-viewer-buffer ()
   "Return a reusable buffer suitable for viewing messages.
 Create the buffer if necessary."
-  (let* ((suffix (file-name-nondirectory (or buffer-file-name (buffer-name))))
-        (name (format " *message-viewer %s*" suffix))
-        (buf (get-buffer name)))
-    (or buf
-       (generate-new-buffer name))))
+  ;; We want to reuse any existing view buffer, so as not to create an
+  ;; endless number of them.  But we must avoid clashes if we visit
+  ;; two different rmail files with the same basename (Bug#4593).
+  (if (and (local-variable-p 'rmail-view-buffer)
+          (buffer-live-p rmail-view-buffer))
+      rmail-view-buffer
+    (generate-new-buffer
+     (format " *message-viewer %s*"
+            (file-name-nondirectory (or buffer-file-name (buffer-name)))))))
 
 (defun rmail-swap-buffers ()
   "Swap text between current buffer and `rmail-view-buffer'.
@@ -1367,6 +1371,9 @@
   (set-buffer-multibyte nil)
   (with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer))
     (setq buffer-undo-list t)
+    ;; Note that this does not erase the buffer.  Should it?
+    ;; It depends on how this is called.  If somehow called with the
+    ;; rmail buffers swapped, it would erase the message collection.
     (set (make-local-variable 'rmail-overlay-list) nil)
     (set-buffer-multibyte t)
     ;; Force C-x C-s write Unix EOLs.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]