GNU bug report logs -
#32850
27.0.50; window-swap-states doesn't swap window prev/next-buffers
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Thu, 27 Sep 2018 00:06:02 UTC
Severity: minor
Found in version 27.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
>> I found a problem, it occurs very rarely:
>>
>> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
>> get-buffer(nil)
>> #f(compiled-function (entry) #<bytecode 0x22c739>)((nil nil nil))
>> mapcar(#f(compiled-function (entry) #<bytecode 0x22c739>) (("*Group*" 1 139) (nil nil nil) ("*sent reply to martin rudalics*" 1 1090)))
>> window--state-put-2(safe 737)
>> window-state-put(...)
>>
>> Do you have an idea how did (nil nil nil) find its way into the list of
>> prev-buffers? (window-state-get was used with the non-nil WRITABLE arg)
>
> The most simple way to find out is to define such a list in window.c
> and have 'set-window-prev-buffers' holler if the prev_buffers argument
> is equal to that list.
I can't find out how '(nil nil nil)' gets into the prev-buffers,
so to avoid the error, I propose to install this patch:
diff --git a/lisp/window.el b/lisp/window.el
index 27d7e42280..c562ed3cfa 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5854,14 +5854,15 @@ window--state-put-2
(set-window-next-buffers
window
(delq nil (mapcar (lambda (buffer)
- (setq buffer (get-buffer buffer))
+ (setq buffer (and buffer (get-buffer buffer)))
(when (buffer-live-p buffer) buffer))
next-buffers))))
(when prev-buffers
(set-window-prev-buffers
window
(delq nil (mapcar (lambda (entry)
- (let ((buffer (get-buffer (nth 0 entry)))
+ (let ((buffer (and (nth 0 entry)
+ (get-buffer (nth 0 entry))))
(m1 (nth 1 entry))
(m2 (nth 2 entry)))
(when (buffer-live-p buffer)
This bug report was last modified 6 years and 183 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.