about summary refs log tree commit diff stats
path: root/081print.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2017-05-10 16:37:35 -0700
committerKartik K. Agaram <vc@akkartik.com>2017-05-10 16:37:35 -0700
commitff96aace6d9fd99fcf8bdacf2c663dbf4451367c (patch)
treee4535e33b7c39f67efc9f34ca94efad42fcddca5 /081print.mu
parent45bcfcfe10e6a2fbc8aa4a84f60ca7d39af14031 (diff)
downloadmu-ff96aace6d9fd99fcf8bdacf2c663dbf4451367c.tar.gz
3850
Bugfix: writes out of bounds used to be skipped, but started clobbering
the screen on commit 3824.
Diffstat (limited to '081print.mu')
-rw-r--r--081print.mu20
1 files changed, 16 insertions, 4 deletions
diff --git a/081print.mu b/081print.mu
index d795e617..1d3bf8dc 100644
--- a/081print.mu
+++ b/081print.mu
@@ -101,15 +101,27 @@ def print screen:&:screen, c:char -> screen:&:screen [
   row:num <- get *screen, cursor-row:offset
   row <- round row
   legal?:bool <- greater-or-equal row, 0
-  return-unless legal?
+  {
+    break-if legal?
+    row <- copy 0
+  }
   legal? <- lesser-than row, height
-  return-unless legal?
+  {
+    break-if legal?
+    row <- subtract height, 1
+  }
   column:num <- get *screen, cursor-column:offset
   column <- round column
   legal? <- greater-or-equal column, 0
-  return-unless legal?
+  {
+    break-if legal?
+    column <- copy 0
+  }
   legal? <- lesser-than column, width
-  return-unless legal?
+  {
+    break-if legal?
+    column <- subtract width, 1
+  }
 #?     $print [print-character (], row, [, ], column, [): ], c, 10/newline
   # special-case: newline
   {