All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.