From 64e2c4b602cc7a71ed3e86585fa5efbeca224cbf Mon Sep 17 00:00:00 2001 From: "Antonino A. Daplas" Date: Tue, 6 Sep 2005 15:17:52 -0700 Subject: [PATCH] --- yaml --- r: 7405 b: refs/heads/master c: 414edcd32aa54bad8827e7c74cace168006c5fab h: refs/heads/master i: 7403: b1b72084270e374554d9dc7c55dfa623ca6d7cef v: v3 --- [refs] | 2 +- trunk/drivers/char/vt.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 644f7a01963d..abcb012101be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eed74dfcd48101d259012ac08d29061eea500249 +refs/heads/master: 414edcd32aa54bad8827e7c74cace168006c5fab diff --git a/trunk/drivers/char/vt.c b/trunk/drivers/char/vt.c index 27b6c297906a..b8d0c290b0db 100644 --- a/trunk/drivers/char/vt.c +++ b/trunk/drivers/char/vt.c @@ -434,21 +434,25 @@ void invert_screen(struct vc_data *vc, int offset, int count, int viewed) /* used by selection: complement pointer position */ void complement_pos(struct vc_data *vc, int offset) { - static unsigned short *p; + static int old_offset = -1; static unsigned short old; static unsigned short oldx, oldy; WARN_CONSOLE_UNLOCKED(); - if (p) { - scr_writew(old, p); + if (old_offset != -1 && old_offset >= 0 && + old_offset < vc->vc_screenbuf_size) { + scr_writew(old, screenpos(vc, old_offset, 1)); if (DO_UPDATE(vc)) vc->vc_sw->con_putc(vc, old, oldy, oldx); } - if (offset == -1) - p = NULL; - else { + + old_offset = offset; + + if (offset != -1 && offset >= 0 && + offset < vc->vc_screenbuf_size) { unsigned short new; + unsigned short *p; p = screenpos(vc, offset, 1); old = scr_readw(p); new = old ^ vc->vc_complement_mask; @@ -459,6 +463,7 @@ void complement_pos(struct vc_data *vc, int offset) vc->vc_sw->con_putc(vc, new, oldy, oldx); } } + } static void insert_char(struct vc_data *vc, unsigned int nr)