Ensure valid cursor position after drawing hp/mp bar
authoradvil <rawlins@gmail.com>
Thu, 30 Jul 2020 22:45:40 +0000 (18:45 -0400)
committeradvil <rawlins@gmail.com>
Thu, 30 Jul 2020 22:49:02 +0000 (18:49 -0400)
After 94fddd9 gave the equip_bar somewhat smarter redraws, it became
possible for this function to skip everything after one of the bar
redraws, which when it happens would lead to a crash -- these bars
guaranteed an invalid cursor position at the end of `draw`. `vdraw`
would probably have a similar problem but cursor position validity isn't
handle the same way for tiles (and equip bar doesn't exist either).

crawl-ref/source/output.cc

index f819074..0e917c4 100644 (file)
@@ -398,6 +398,9 @@ public:
 
         textcolour(LIGHTGREY);
         textbackground(BLACK);
+        // the cursor position is now invalid, because we are past the end of
+        // the stat region: leave it somewhere valid.
+        CGOTOXY(ox, oy, GOTO_STAT);
     }
 
     void vdraw(int ox, int oy, int val, int max_val)