all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: "Jan Djärv" <jan.h.d@swipnet.se>
Cc: 15575@debbugs.gnu.org
Subject: bug#15575: 24.3.50; New tty menus crash Emacs
Date: Wed, 09 Oct 2013 22:00:34 +0300	[thread overview]
Message-ID: <834n8qqnfx.fsf@gnu.org> (raw)
In-Reply-To: <5D661800-C7B5-495B-BF9D-F2E1F16C9B93@swipnet.se>

> From: Jan Djärv <jan.h.d@swipnet.se>
> Date: Wed, 9 Oct 2013 19:58:57 +0200
> Cc: 15575@debbugs.gnu.org
> 
> (gdb) p from->used[0]
> $1 = 30065
> (gdb) p from->used[1]
> $2 = 26977
> (gbd) p from->used[2]
> $3 = 12140

I don't see how this could be true, I guess the compiler fools the
debugger here.

> (gdb) p to->used[0]
> $7 = 4
> (gdb) p to->used[1]
> $8 = 0
> (gdb) p to->used[2]
> $9 = 0

Likewise, this doesn't seem to be possible on a TTY.  Sigh...

> (gdb) p to->glyphs[0]
> $10 = (struct glyph *) 0x4
> (gdb) p to->glyphs[1]
> $11 = (struct glyph *) 0x4
> (gdb) p to->glyphs[2]
> $12 = (struct glyph *) 0x4

Neither can this be true, I think.  Or maybe I'm missing something.

> (gdb) p sizeof(struct glyph)
> $13 = 48

This one is the only one that makes sense, but it's not a variable, so
I'm not surprised.

> These values vary if run again.   Here is another run:
> 
> $1 = 12346
> $2 = 384
> $3 = 1
> $4 = (struct glyph *) 0x3000000000000088
> $5 = (struct glyph *) 0x100f11e21
> $6 = (struct glyph *) 0x10180300a
> $7 = 12346
> $8 = 384
> $9 = 1
> $10 = (struct glyph *) 0x104033e00
> $11 = (struct glyph *) 0x1040c48e0
> $12 = (struct glyph *) 0x1040c90e0
> $13 = 48
> $14 = 12731
> $15 = 0

Can you try the patch below?

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2013-10-08 17:49:20 +0000
+++ src/xdisp.c	2013-10-09 18:44:38 +0000
@@ -20589,11 +20589,14 @@ display_menu_bar (struct window *w)
 static void
 deep_copy_glyph_row (struct glyph_row *to, struct glyph_row *from)
 {
-  int area, i, sum_used = 0;
+  int area, i;
   struct glyph *pointers[1 + LAST_AREA];
 
   /* Save glyph pointers of TO.  */
   memcpy (pointers, to->glyphs, sizeof to->glyphs);
+  eassert (to->used[0] == from->used[0]);
+  eassert (to->used[1] == from->used[1]);
+  eassert (to->used[2] == from->used[2]);
 
   /* Do a structure assignment.  */
   *to = *from;
@@ -20601,22 +20604,10 @@ deep_copy_glyph_row (struct glyph_row *t
   /* Restore original pointers of TO.  */
   memcpy (to->glyphs, pointers, sizeof to->glyphs);
 
-  /* Count how many glyphs to copy and update glyph pointers.  */
+  /* Count how many glyphs to copy and copy the glyphs.  */
   for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
-    {
-      if (area > LEFT_MARGIN_AREA)
-	{
-	  eassert (from->glyphs[area] - from->glyphs[area - 1]
-		   == from->used[area - 1]);
-	  to->glyphs[area] = to->glyphs[area - 1] + to->used[area - 1];
-	}
-      sum_used += from->used[area];
-    }
-
-  /* Copy the glyphs.  */
-  eassert (sum_used <= to->glyphs[LAST_AREA] - to->glyphs[LEFT_MARGIN_AREA]);
-  for (i = 0; i < sum_used; i++)
-    to->glyphs[LEFT_MARGIN_AREA][i] = from->glyphs[LEFT_MARGIN_AREA][i];
+    for (i = 0; i < from->used[area]; i++)
+      to->glyphs[area][i] = from->glyphs[area][i];
 }
 
 /* Display one menu item on a TTY, by overwriting the glyphs in the






  parent reply	other threads:[~2013-10-09 19:00 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-09 17:05 bug#15575: 24.3.50; New tty menus crash Emacs Jan Djärv
2013-10-09 17:41 ` Eli Zaretskii
2013-10-09 17:58   ` Jan Djärv
2013-10-09 18:17     ` Jan Djärv
2013-10-09 18:20       ` Jan Djärv
2013-10-09 19:00     ` Eli Zaretskii [this message]
     [not found]       ` <97F9A2CA-8E08-4867-93C3-5BAE8DF80D72@swipnet.se>
2013-10-10 16:15         ` Eli Zaretskii
2013-10-10 17:35           ` Jan Djärv
2013-10-10 19:36             ` Eli Zaretskii
2013-10-11  5:44               ` Jan Djärv
2013-10-11  7:09                 ` Eli Zaretskii
2013-10-11  8:10                   ` Eli Zaretskii
2013-10-11  9:28                   ` Eli Zaretskii
2013-10-11 11:06                     ` Eli Zaretskii
2013-10-11 16:39                       ` Jan Djärv
2013-10-11 17:29                         ` Eli Zaretskii
2013-10-11 18:53                           ` Jan Djärv
2013-10-11 11:12                     ` Jan Djärv
2013-10-11  9:55                   ` martin rudalics
2013-10-11 11:09                     ` Eli Zaretskii
2013-10-11 11:42                       ` martin rudalics
2013-10-11 11:53                         ` martin rudalics
2013-10-11 12:04                           ` Dani Moncayo
2013-10-11 14:25                             ` Eli Zaretskii
2013-10-11 14:43                               ` Dani Moncayo
2013-10-11 14:54                                 ` Eli Zaretskii
2013-10-11 15:02                                   ` Dani Moncayo
2013-10-11 15:44                                     ` Eli Zaretskii
2013-10-11 16:37                                       ` Dani Moncayo
2013-10-11 14:20                           ` Eli Zaretskii
2013-10-15 18:27                             ` martin rudalics
2013-10-11 14:17                         ` Eli Zaretskii
2013-10-11 18:22                           ` Eli Zaretskii
2013-10-11 18:49                             ` Stefan Monnier
2013-10-11 20:26                               ` Eli Zaretskii
2013-10-15 18:27                           ` martin rudalics
2013-10-15 19:01                             ` Eli Zaretskii
2013-10-16  7:44                               ` martin rudalics
2013-10-16 15:21                                 ` Eli Zaretskii
2013-10-16 17:48                                   ` martin rudalics
2013-10-16 18:34                                     ` Eli Zaretskii
2013-10-16 18:45                                       ` martin rudalics
2013-10-10 20:56             ` Stefan Monnier
2013-10-10 20:59               ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=834n8qqnfx.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=15575@debbugs.gnu.org \
    --cc=jan.h.d@swipnet.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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.