qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] fix curses update
@ 2010-04-20  9:38 Bernhard Kauer
  2010-04-22  1:27 ` andrzej zaborowski
  0 siblings, 1 reply; 7+ messages in thread
From: Bernhard Kauer @ 2010-04-20  9:38 UTC (permalink / raw)
  To: qemu-devel

If a terminal is resized or the VGA model issues a full refresh, curses_update()
is called, which uses mvwaddchnstr() to draw a full line of characters.  Unfortunatelly
this routine expects a null-terminated string and early aborts if a null is present
in the line. 

When booting an OS that zeros the VGA text buffer and later pokes single characters,
the console output can become unreadable.  The attached patch corrects this bug.


	Bernhard Kauer



Signed-off-by: Bernhard Kauer <kauer@tudos.org>

diff --git a/curses.c b/curses.c
index ed3165e..9bf9265 100644
--- a/curses.c
+++ b/curses.c
@@ -48,10 +48,12 @@ static int px, py, sminx, sminy, smaxx, smaxy;
 static void curses_update(DisplayState *ds, int x, int y, int w, int h)
 {
     chtype *line;
+    int i;
 
     line = ((chtype *) screen) + y * width;
     for (h += y; y < h; y ++, line += width)
-        mvwaddchnstr(screenpad, y, 0, line, width);
+      for (i = 0; i < width; i++)
+	mvwaddch(screenpad, y, i, (line[i] & 0xff) ? line[i] : ' ');
 
     pnoutrefresh(screenpad, py, px, sminy, sminx, smaxy - 1, smaxx - 1);
     refresh();

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-05-21 12:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-20  9:38 [Qemu-devel] [PATCH] fix curses update Bernhard Kauer
2010-04-22  1:27 ` andrzej zaborowski
2010-04-22 14:08   ` Bernhard Kauer
2010-05-03 18:06     ` Anthony Liguori
2010-05-20 20:53       ` [Qemu-devel] [PATCH] fix curses update - v2 Bernhard Kauer
2010-05-21 12:02         ` andrzej zaborowski
2010-05-21 12:43           ` Bernhard Kauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).