unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
@ 2016-07-10 23:33 Clément Pit--Claudel
  2016-07-11 14:20 ` Paul Eggert
  2016-07-11 14:21 ` Eli Zaretskii
  0 siblings, 2 replies; 5+ messages in thread
From: Clément Pit--Claudel @ 2016-07-10 23:33 UTC (permalink / raw)
  To: 23938; +Cc: Paul Eggert


[-- Attachment #1.1: Type: text/plain, Size: 1449 bytes --]

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 <eggert@cs.ucla.edu>
    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



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
  2016-07-10 23:33 bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master Clément Pit--Claudel
@ 2016-07-11 14:20 ` Paul Eggert
  2016-07-11 14:21 ` Eli Zaretskii
  1 sibling, 0 replies; 5+ messages in thread
From: Paul Eggert @ 2016-07-11 14:20 UTC (permalink / raw)
  To: Clément Pit--Claudel, 23938-done

[-- Attachment #1: Type: text/plain, Size: 190 bytes --]

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.

[-- Attachment #2: 0001-Fix-composition-bug-caused-by-off-by-1-typo.patch --]
[-- Type: text/x-patch, Size: 888 bytes --]

From 8cb5ab5cf48362ea64c6463a8aabc4892c5352f7 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
  2016-07-10 23:33 bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master Clément Pit--Claudel
  2016-07-11 14:20 ` Paul Eggert
@ 2016-07-11 14:21 ` Eli Zaretskii
  2016-07-11 14:36   ` Paul Eggert
  1 sibling, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2016-07-11 14:21 UTC (permalink / raw)
  To: Clément Pit--Claudel; +Cc: eggert, 23938-done

> From: Clément Pit--Claudel <clement.pitclaudel@live.com>
> Date: Mon, 11 Jul 2016 01:33:38 +0200
> Cc: Paul Eggert <eggert@cs.ucla.edu>
> 
> 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 <eggert@cs.ucla.edu>
>     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.
>         (...)

Thanks, fixed.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
  2016-07-11 14:21 ` Eli Zaretskii
@ 2016-07-11 14:36   ` Paul Eggert
  2016-07-11 15:04     ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: Paul Eggert @ 2016-07-11 14:36 UTC (permalink / raw)
  To: Eli Zaretskii, Clément Pit--Claudel; +Cc: 23938-done

On 07/11/2016 04:21 PM, Eli Zaretskii wrote:
> Thanks, fixed.

Amusingly enough, you and I independently installed exactly the same 
code patch, byte-for-byte, nearly simultaneously. There is no difference 
between commits 4ba2946369cb19dfeb258839add0658c742c12a1 and 
10cfb736e2d32bd2604dc93a979ce136473b5944, and Git silently merged the 
two when you merged your commit into master. I don't know whether to 
worry about our duplicative work or to re-tell the famous war story 
about Ritchie and Thompson; see, for example, page 4 of:

McIlroy MD. Remarks for Japan Prize award ceremony for Dennis Ritchie. 
2011-05-19, Murray Hill, NJ. http://www.cs.dartmouth.edu/~doug/dmr.pdf





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master
  2016-07-11 14:36   ` Paul Eggert
@ 2016-07-11 15:04     ` Eli Zaretskii
  0 siblings, 0 replies; 5+ messages in thread
From: Eli Zaretskii @ 2016-07-11 15:04 UTC (permalink / raw)
  To: Paul Eggert; +Cc: clement.pitclaudel, 23938

> Cc: 23938-done@debbugs.gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Mon, 11 Jul 2016 16:36:19 +0200
> 
> On 07/11/2016 04:21 PM, Eli Zaretskii wrote:
> > Thanks, fixed.
> 
> Amusingly enough, you and I independently installed exactly the same 
> code patch, byte-for-byte, nearly simultaneously. There is no difference 
> between commits 4ba2946369cb19dfeb258839add0658c742c12a1 and 
> 10cfb736e2d32bd2604dc93a979ce136473b5944, and Git silently merged the 
> two when you merged your commit into master.

Yep.  It happens.





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-11 15:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-10 23:33 bug#23938: Commit 237244bbd5ce753bcdf79634561de515bd76c687 broke display of composed characters on master Clément Pit--Claudel
2016-07-11 14:20 ` Paul Eggert
2016-07-11 14:21 ` Eli Zaretskii
2016-07-11 14:36   ` Paul Eggert
2016-07-11 15:04     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).