Return a value to the continuations from various %8sync-* calls
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 12 Dec 2015 02:03:53 +0000 (20:03 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 12 Dec 2015 02:03:53 +0000 (20:03 -0600)
Just doing (kont) would result in an error at times.

* 8sync/agenda.scm (%8sync-port, %8sync-port-remove, %8sync-immediate):
  Updated with fix.

8sync/agenda.scm

index 3bd5787962ff4f25b3c62c9421b4bdcf55331e92..af5ef3ce31b516bbeb2d9df05404926e9d0fa336 100644 (file)
@@ -575,14 +575,20 @@ Possibly specify WHEN as the second argument."
    (make-async-request
     (lambda (kont)
       (list (make-port-request port port-request-args ...)
-            (make-run-request kont #f))))))
+            (make-run-request
+             ;; What's with returning #f to kont?
+             ;; Otherwise we sometimes get errors like
+             ;; "Zero values returned to single-valued continuation""
+             (wrap (kont #f)) #f))))))
 
 (define-syntax-rule (%8sync-port-remove port)
   (%8sync-abort-to-prompt
    (make-async-request
     (lambda (kont)
       (list (make-port-remove-request port)
-            (make-run-request kont #f))))))
+            (make-run-request
+             ;; See comment in %8sync-port
+             (wrap (kont #f)) #f))))))
 
 
 ;; TODO: Write (%run-immediately)
@@ -593,7 +599,9 @@ forge ahead in our current function!"
   (%8sync-abort-to-prompt
    (make-async-request
     (lambda (kont)
-      (list (make-run-request kont #f)
+      (list (make-run-request
+             ;; See comment in %8sync-port
+             (wrap (kont #f)) #f)
             (make-run-request body #f))))))
 
 (define-syntax-rule (catch-8sync exp (handler-key handler) ...)