diff options
| -rw-r--r-- | input.e | 6 |
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 ; |