summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--input.e6
1 files changed, 4 insertions, 2 deletions
diff --git a/input.e b/input.e
index dd1da1c..52fe717 100644
--- a/input.e
+++ b/input.e
@@ -229,8 +229,10 @@
   ~   Check whether the buffer is full. If not, do a read. If so, that's not
   ~ an error, just clean up and take no action.
   dup { swap sys-read
-        dup -2 =
-        { drop drop s" Read error." emitstring 0 sys-exit }
+        dup 0 > {
+          dup -4 =
+          { drop recurse }
+          { drop drop s" Read error." emitstring 0 sys-exit } if-else }
         { swap dup buffer-logical-length @ 3roll +
           swap buffer-logical-length ! } if-else }
       { drop drop } if-else ;