branch: externals/llm
commit cdbb41528c534bb22986602bea096aad5dda3053
Author: Roman Scherer <ro...@burningswell.com>
Commit: Roman Scherer <ro...@burningswell.com>

    Fix issue advancing the process buffer
    
    In a recent refactoring I introduced an issue where the process marker
    didn't get set, and thus insertions into the process buffer got messed
    up. This fixes the issue. I added more thorough tests for this as well
    over here:
    
    
https://github.com/r0man/plz.el/blob/plz-media-type/tests/test-plz-media-type.el#L154-L233
---
 plz-event-source.el | 51 +++++++++++++++++++++++++--------------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/plz-event-source.el b/plz-event-source.el
index c98d6f86cb..fe09cdc4a8 100644
--- a/plz-event-source.el
+++ b/plz-event-source.el
@@ -420,32 +420,31 @@
 
 (cl-defmethod plz-media-type-process ((media-type 
plz-media-type:text/event-stream) process chunk)
   "Process the CHUNK according to MEDIA-TYPE using PROCESS."
-  (when (buffer-live-p (process-buffer process))
-    (with-current-buffer (process-buffer process)
-      (unless plz-event-source--current
-        (let* ((response (make-plz-response
-                          :status (plz-response-status chunk)
-                          :headers (plz-response-headers chunk)))
-               (source (plz-event-source-open
-                        (plz-buffer-event-source
-                         :buffer (buffer-name (process-buffer process))
-                         :handlers (seq-map
-                                    (lambda (pair)
-                                      (let ((type (car pair))
-                                            (handler (cdr pair)))
-                                        (cond
-                                         ((equal "open" type)
-                                          (cons type (lambda (source event)
-                                                       (setf (oref event data) 
response)
-                                                       (funcall handler source 
event))))
-                                         ((equal "close" type)
-                                          (cons type (lambda (source event)
-                                                       (setf (oref event data) 
response)
-                                                       (funcall handler source 
event))))
-                                         (t pair))))
-                                    (oref media-type events))))))
-          (setq-local plz-event-source--current source)))
-      (plz-event-source-insert plz-event-source--current (plz-response-body 
chunk)))))
+  (unless plz-event-source--current
+    (let* ((response (make-plz-response
+                      :status (plz-response-status chunk)
+                      :headers (plz-response-headers chunk)))
+           (source (plz-event-source-open
+                    (plz-buffer-event-source
+                     :buffer (buffer-name (process-buffer process))
+                     :handlers (seq-map
+                                (lambda (pair)
+                                  (let ((type (car pair))
+                                        (handler (cdr pair)))
+                                    (cond
+                                     ((equal "open" type)
+                                      (cons type (lambda (source event)
+                                                   (setf (oref event data) 
response)
+                                                   (funcall handler source 
event))))
+                                     ((equal "close" type)
+                                      (cons type (lambda (source event)
+                                                   (setf (oref event data) 
response)
+                                                   (funcall handler source 
event))))
+                                     (t pair))))
+                                (oref media-type events))))))
+      (setq-local plz-event-source--current source)))
+  (plz-event-source-insert plz-event-source--current (plz-response-body chunk))
+  (set-marker (process-mark process) (point)))
 
 (cl-defmethod plz-media-type-then ((media-type 
plz-media-type:text/event-stream) response)
   "Transform the RESPONSE into a format suitable for MEDIA-TYPE."

Reply via email to