Fix problem with crashing in Emacs interface.
authorChris Hanson <org/chris-hanson/cph>
Wed, 2 Jan 2019 06:30:06 +0000 (01:30 -0500)
committerChris Hanson <org/chris-hanson/cph>
Sun, 6 Jan 2019 07:29:42 +0000 (23:29 -0800)
src/runtime/emacs.scm

index 43f9452384aee57de979deaa6a364b59af661c80..489a79782f158b8e14a3a1faf134ca6eff8b9b93 100644 (file)
@@ -178,22 +178,21 @@ USA.
 
 (define (emacs/gc-start port)
   (output-port/flush-output port)
-  (cwb (output-port-channel port) gc-start-bytes))
+  (cwb console-output-channel gc-start-bytes))
 
 (define (emacs/gc-finish port)
-  (cwb (output-port-channel port) gc-end-bytes))
+  (declare (ignore port))
+  (cwb console-output-channel gc-end-bytes))
 
 (define (transmit-signal port type)
-  (let ((channel (output-port-channel port))
-       (buffer (string->utf8 (string #\esc type))))
+  (let ((buffer (string->utf8 (string #\esc type))))
     (output-port/flush-output port)
     (with-absolutely-no-interrupts
      (lambda ()
-       (cwb channel buffer)))))
+       (cwb console-output-channel buffer)))))
 
 (define (transmit-signal-with-argument port type string)
-  (let ((channel (output-port-channel port))
-       (buffer
+  (let ((buffer
         (let ((builder (bytevector-builder)))
           (builder (char->integer #\esc))
           (builder (char->integer type))
@@ -203,7 +202,7 @@ USA.
     (output-port/flush-output port)
     (with-absolutely-no-interrupts
      (lambda ()
-       (cwb channel buffer)))))
+       (cwb console-output-channel buffer)))))
 
 (define (cwb channel bytes)
   ;; This is a private copy of CHANNEL-WRITE-BLOCK that bypasses all
@@ -226,6 +225,7 @@ USA.
 
 (define gc-start-bytes)
 (define gc-end-bytes)
+(define console-output-channel)
 (define vanilla-console-port-type)
 (define emacs-console-port-type)
 
@@ -236,6 +236,7 @@ USA.
   (set! gc-end-bytes
        (bytevector (char->integer #\esc)
                    (char->integer #\e)))
+  (set! console-output-channel (output-port-channel the-console-port))
   (set! vanilla-console-port-type (textual-port-type the-console-port))
   (set! emacs-console-port-type
        (make-textual-port-type