changeset 109661:f0037b96cd03

Fix redisplay bugs due to uninitialized glyphs. Add diagnostics tools. dispnew.c (realloc_glyph_pool): Zero out newly allocated glyphs. msdos.c (IT_display_cursor): Log cursor position on termscript. .gdbinit (pgx): Display the avoid_cursor_p flag.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 06 Aug 2010 18:05:21 +0300
parents 6387fbfcb44d (current diff) 85236524c2a3 (diff)
children bac133026fa9
files src/ChangeLog
diffstat 4 files changed, 20 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/.gdbinit	Fri Aug 06 16:34:23 2010 +0200
+++ b/src/.gdbinit	Fri Aug 06 18:05:21 2010 +0300
@@ -535,6 +535,9 @@
   if ($g->overlaps_vertically_p)
     printf " OVL"
   end
+  if ($g->avoid_cursor_p)
+    printf " AVOID"
+  end
   if ($g->left_box_line_p)
     printf " ["
   end
--- a/src/ChangeLog	Fri Aug 06 16:34:23 2010 +0200
+++ b/src/ChangeLog	Fri Aug 06 18:05:21 2010 +0300
@@ -1,3 +1,11 @@
+2010-08-06  Eli Zaretskii  <eliz@gnu.org>
+
+	* dispnew.c (realloc_glyph_pool): Zero out newly allocated glyphs.
+
+	* msdos.c (IT_display_cursor): Log cursor position on termscript.
+
+	* .gdbinit (pgx): Display the avoid_cursor_p flag.
+
 2010-08-06  Juanma Barranquero  <lekktu@gmail.com>
 
 	* makefile.w32-in ($(BLD)/xdisp.$(O)): Update dependencies.
--- a/src/dispnew.c	Fri Aug 06 16:34:23 2010 +0200
+++ b/src/dispnew.c	Fri Aug 06 18:05:21 2010 +0300
@@ -1528,7 +1528,11 @@
       int size = needed * sizeof (struct glyph);
 
       if (pool->glyphs)
-	pool->glyphs = (struct glyph *) xrealloc (pool->glyphs, size);
+	{
+	  pool->glyphs = (struct glyph *) xrealloc (pool->glyphs, size);
+	  memset (pool->glyphs + pool->nglyphs, 0,
+		  size - pool->nglyphs * sizeof (struct glyph));
+	}
       else
 	{
 	  pool->glyphs = (struct glyph *) xmalloc (size);
--- a/src/msdos.c	Fri Aug 06 16:34:23 2010 +0200
+++ b/src/msdos.c	Fri Aug 06 18:05:21 2010 +0300
@@ -1593,14 +1593,16 @@
       ScreenSetCursor (current_pos_Y, current_pos_X);
       cursor_cleared = 0;
       if (tty->termscript)
-	fprintf (tty->termscript, "\nCURSOR ON");
+	fprintf (tty->termscript, "\nCURSOR ON (%dx%d)",
+		 current_pos_Y, current_pos_X);
     }
   else if (!on && !cursor_cleared)
     {
       ScreenSetCursor (-1, -1);
       cursor_cleared = 1;
       if (tty->termscript)
-	fprintf (tty->termscript, "\nCURSOR OFF");
+	fprintf (tty->termscript, "\nCURSOR OFF (%dx%d)",
+		 current_pos_Y, current_pos_X);
     }
 }