Subject: bug#23938: closed (Re: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 11 Jul 2016 14:21:02 +0000

Your bug report

#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
23938: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23938
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
From: Paul Eggert <[email-masked]>
To: Clément Pit--Claudel <[email-masked]>, [email-masked]
Date: Mon, 11 Jul 2016 16:20:09 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for tracking that bug down and for the reproducible test case. It 
was a typo in that refactoring commit; sorry about that. I installed the 
attached patch into master to fix things.
>From 8cb5ab5cf48362ea64c6463a8aabc4892c5352f7 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Mon, 11 Jul 2016 16:14:33 +0200
Subject: [PATCH] Fix composition bug caused by off-by-1 typo

* src/xdisp.c (x_produce_glyphs): Fix off-by-one typo when
computing composition glyph (Bug#23938).
---
 src/xdisp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index d5ffb25..14d6f8f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -27369,8 +27369,8 @@ x_produce_glyphs (struct it *it)
 
 	  eassume (0 < glyph_len); /* See Bug#8512.  */
 	  do
-	    c = COMPOSITION_GLYPH (cmp, --glyph_len);
-	  while (c == '\t' && 0 < glyph_len);
+	    c = COMPOSITION_GLYPH (cmp, glyph_len - 1);
+	  while (c == '\t' && 0 < --glyph_len);
 
 	  bool right_padded = glyph_len < cmp->glyph_len;
 	  for (i = 0; i < glyph_len; i++)
-- 
2.5.5

Subject: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
From: Clément Pit--Claudel <[email-masked]>
To: [email-masked]
Cc: Paul Eggert <[email-masked]>
Date: Mon, 11 Jul 2016 01:33:38 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi all,

Running the following in Emacs 24 and 25-rc pops a buffer displaying "bd". On master, it displays "b" and "d" on top of each other.

    (with-current-buffer (get-buffer-create "*test*")
      (erase-buffer)
      (fundamental-mode)
      (insert "test")
      (compose-region (point-min) (point-max) '(?b (Br . Bl) ?d))
      (pop-to-buffer (current-buffer)))

Bisecting points to the following commit:

    237244bbd5ce753bcdf79634561de515bd76c687 is the first bad commit
    commit 237244bbd5ce753bcdf79634561de515bd76c687
    Author: Paul Eggert <[email-masked]>
    Date:   Mon May 30 16:09:25 2016 -0700

        Omit IF_LINT code that no longer seems needed

        Nowadays GCC is smarter, or the Emacs code has mutated, or both,
        and now is as good a time as any to remove uses of IF_LINT that
        now seem to be unnecessary.
        (...)

The small test case is courtesy of Artur; we both noticed the issue while using his (awesome) ‘nameless’ package; see https://github.com/Malabarba/Nameless/issues/15 for details on the issue that prompted the investigation.

Cheers,
Clément.

In GNU Emacs 25.1.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2016-06-26 built on clem-w50-mint
Repository revision: 431437b6593320dc5a7a8aac9c911c778a656117
Windowing system distributor 'The X.Org Foundation', version 11.0.11501000
System Description:	Linux Mint 17.3 Rosa