aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/screen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen.cpp')
-rw-r--r--src/screen.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/screen.cpp b/src/screen.cpp
index fc5c927c..a9d9ddcf 100644
--- a/src/screen.cpp
+++ b/src/screen.cpp
@@ -347,12 +347,18 @@ static void s_save_status(screen_t *s) {
static void s_check_status(screen_t *s) {
fflush(stdout);
fflush(stderr);
+ if (!has_working_tty_timestamps) {
+ // We can't reliably determine if the terminal has been written to behind our back so we
+ // just assume that hasn't happened and hope for the best. This is important for multi-line
+ // prompts to work correctly.
+ return;
+ }
fstat(1, &s->post_buff_1);
fstat(2, &s->post_buff_2);
- int changed = (s->prev_buff_1.st_mtime != s->post_buff_1.st_mtime) ||
- (s->prev_buff_2.st_mtime != s->post_buff_2.st_mtime);
+ bool changed = (s->prev_buff_1.st_mtime != s->post_buff_1.st_mtime) ||
+ (s->prev_buff_2.st_mtime != s->post_buff_2.st_mtime);
#if defined HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
changed = changed ||