Skip to content

Commit c89271e

Browse files
author
Kang Tu
committed
fix: guard process filters against deleted buffers on exit
When Claude Code exits inside a ghostel or eat terminal buffer, the process filter could fire after the buffer was already killed, causing "error in process filter: Selecting deleted buffer". Add buffer-live-p checks before and after orig-filter in both backends.
1 parent 8db1317 commit c89271e

2 files changed

Lines changed: 21 additions & 15 deletions

File tree

ai-code-backends-infra-eat.el

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,18 @@ variables for the terminal process."
134134
(set-process-filter
135135
proc
136136
(lambda (process output)
137-
(let ((filtered-output
138-
(with-current-buffer (process-buffer process)
139-
(ai-code-backends-infra--strip-alternate-screen-sequences output))))
140-
(when orig-filter
141-
(funcall orig-filter process filtered-output))
142-
(with-current-buffer (process-buffer process)
143-
(when (ai-code-backends-infra--output-meaningful-p filtered-output)
144-
(ai-code-backends-infra--note-meaningful-output))
145-
(ai-code-session-link--linkify-recent-output filtered-output)))))))
137+
(when-let ((buf (process-buffer process)))
138+
(when (buffer-live-p buf)
139+
(let ((filtered-output
140+
(with-current-buffer buf
141+
(ai-code-backends-infra--strip-alternate-screen-sequences output))))
142+
(when orig-filter
143+
(funcall orig-filter process filtered-output))
144+
(when (buffer-live-p buf)
145+
(with-current-buffer buf
146+
(when (ai-code-backends-infra--output-meaningful-p filtered-output)
147+
(ai-code-backends-infra--note-meaningful-output))
148+
(ai-code-session-link--linkify-recent-output filtered-output)))))))))))
146149
(cons buffer (get-buffer-process buffer)))))
147150

148151
(provide 'ai-code-backends-infra-eat)

ai-code-backends-infra-ghostel.el

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,15 @@ variables for the terminal process."
110110
(set-process-filter
111111
proc
112112
(lambda (process output)
113-
(when orig-filter
114-
(funcall orig-filter process output))
115-
(with-current-buffer (process-buffer process)
116-
(when (ai-code-backends-infra--output-meaningful-p output)
117-
(ai-code-backends-infra--note-meaningful-output))
118-
(ai-code-session-link--linkify-recent-output output))))))
113+
(when-let ((buf (process-buffer process)))
114+
(when (buffer-live-p buf)
115+
(when orig-filter
116+
(funcall orig-filter process output))
117+
(when (buffer-live-p buf)
118+
(with-current-buffer buf
119+
(when (ai-code-backends-infra--output-meaningful-p output)
120+
(ai-code-backends-infra--note-meaningful-output))
121+
(ai-code-session-link--linkify-recent-output output)))))))))
119122
(cons buffer proc)))))
120123

121124
(provide 'ai-code-backends-infra-ghostel)

0 commit comments

Comments
 (0)