From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#11199: 24.0.95; killing right-to-left text at eob leads to inconsistent state Date: Mon, 09 Apr 2012 14:07:43 +0300 Message-ID: <838vi588ow.fsf@gnu.org> References: <83bon2ad9z.fsf@gnu.org> <8762dacc3w.fsf@maru.md5i.com> <831uny9ekk.fsf@gnu.org> <87ty0uasiq.fsf@maru.md5i.com> <83y5q67z7h.fsf@gnu.org> <87lim6as39.fsf@maru.md5i.com> <83d37h8e4u.fsf@gnu.org> <83aa2l8b0i.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: dough.gmane.org 1333969815 342 80.91.229.3 (9 Apr 2012 11:10:15 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 9 Apr 2012 11:10:15 +0000 (UTC) Cc: 11199@debbugs.gnu.org To: mituharu@math.s.chiba-u.ac.jp, Michael Welsh Duggan Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Apr 09 13:10:14 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SHCU9-00037O-Bl for geb-bug-gnu-emacs@m.gmane.org; Mon, 09 Apr 2012 13:10:13 +0200 Original-Received: from localhost ([::1]:56850 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SHCU8-0002Py-Lr for geb-bug-gnu-emacs@m.gmane.org; Mon, 09 Apr 2012 07:10:12 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:56619) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SHCU5-0002P8-ML for bug-gnu-emacs@gnu.org; Mon, 09 Apr 2012 07:10:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SHCU3-0007O3-Rh for bug-gnu-emacs@gnu.org; Mon, 09 Apr 2012 07:10:09 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49831) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SHCU3-0007Nj-Nz for bug-gnu-emacs@gnu.org; Mon, 09 Apr 2012 07:10:07 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SHCUw-0004lv-Fu for bug-gnu-emacs@gnu.org; Mon, 09 Apr 2012 07:11:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Apr 2012 11:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11199 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11199-submit@debbugs.gnu.org id=B11199.133396984318315 (code B ref 11199); Mon, 09 Apr 2012 11:11:02 +0000 Original-Received: (at 11199) by debbugs.gnu.org; 9 Apr 2012 11:10:43 +0000 Original-Received: from localhost ([127.0.0.1]:46369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SHCUc-0004lM-J4 for submit@debbugs.gnu.org; Mon, 09 Apr 2012 07:10:42 -0400 Original-Received: from mtaout23.012.net.il ([80.179.55.175]:42872) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SHCUZ-0004lD-RK for 11199@debbugs.gnu.org; Mon, 09 Apr 2012 07:10:41 -0400 Original-Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0M2700L00LJFQP00@a-mtaout23.012.net.il> for 11199@debbugs.gnu.org; Mon, 09 Apr 2012 14:09:42 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([84.229.57.204]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M2700LKTLO2O650@a-mtaout23.012.net.il>; Mon, 09 Apr 2012 14:09:42 +0300 (IDT) In-reply-to: <83aa2l8b0i.fsf@gnu.org> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:58634 Archived-At: > Date: Mon, 09 Apr 2012 13:17:33 +0300 > From: Eli Zaretskii > Cc: 11199@debbugs.gnu.org > > > Date: Mon, 09 Apr 2012 18:48:16 +0900 > > From: YAMAMOTO Mitsuharu > > Cc: Michael Welsh Duggan , > > 11199@debbugs.gnu.org > > > > > (gdb) pmtxrows w->current_matrix > > > 0: edges=(1,78),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 1: edges=(78,141),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 2: edges=(141,191),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 3: edges=(191,192),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 4: edges=(192,199),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 5: edges=(199,237),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 6: edges=(237,305),r2l=0,cont=0,trunc=(0,0),at_zv=0 > > > 7: edges=(305,309),r2l=0,cont=0,trunc=(0,0),at_zv=1 > > (snip) > > > > What is shown by > > > > (gdb) p w->current_matrix->rows[6].end.pos > > > > at this stage? I get > > > > $7 = { > > charpos = 308, > > bytepos = 311 > > } > > > > and it looks "out of sync" because edges=(237,305) for the 6th row. > > I hope this is also reproducible at your side. > > It is, thanks! I now have a lead for my debugging. Stay tuned. Does the patch below fixes the problem? It does not fix the root cause, but should work around it well enough for the release branch. I will install a better (but more risky) fix on the trunk. (There was nothing wrong with the end.pos values above, as long as the Hebrew text in the next line existed: end.pos gives the position of the leftmost character on display in that line, which is not necessarily the first character after the newline. The problem is that init_to_row_end should not use row->end at all.) === modified file 'src/xdisp.c' --- src/xdisp.c 2012-03-31 19:30:53 +0000 +++ src/xdisp.c 2012-04-09 10:58:59 +0000 @@ -17137,7 +17137,8 @@ try_window_id (struct window *w) if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (last_unchanged_at_beg_row)) GIVE_UP (17); - if (init_to_row_end (&it, w, last_unchanged_at_beg_row) == 0) + if (CHARPOS (last_unchanged_at_beg_row->end.pos) > ZV + || init_to_row_end (&it, w, last_unchanged_at_beg_row) == 0) GIVE_UP (18); start_pos = it.current.pos;