GNU bug report logs - #13084
boyer_moore crashes with certain characters in the case table

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> jurta.org>

Date: Wed, 5 Dec 2012 00:37:02 UTC

Severity: normal

Done: Juri Linkov <juri <at> jurta.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juri Linkov <juri <at> jurta.org>, Kenichi Handa <handa <at> gnu.org>
Cc: 13084 <at> debbugs.gnu.org
Subject: bug#13084: boyer_moore crashes with certain characters in the case	table
Date: Tue, 11 Dec 2012 17:37:09 +0200
> From: Juri Linkov <juri <at> jurta.org>
> Date: Wed, 05 Dec 2012 02:34:39 +0200
> 
> The minimal reproducible recipe for crashes in boyer_moore noticed in bug#13041:
> 
> 1. emacs -Q
> 
> 2. Eval in *scratch*:
> 
> (let ((table (standard-case-table)) canon)
>   (setq canon (copy-sequence table))
>   (aset canon #xff59 ?y)
>   (set-char-table-extra-slot table 1 canon)
>   (set-char-table-extra-slot table 2 nil)
>   (set-standard-case-table table))
> 
> 3. Start an activity that includes a search, e.g. `C-x 8 RET TAB'

Thanks.  I think i fixed this (revision 111021 on the emacs-24
branch), please test.

In addition, I'd suggest that Handa-san (or someone else) takes a good
look at the code that sets up the simple_translate table in
boyer_moore, because the constants there, like 0200 and 0x3F, and all
the talk about characters that belong "to the same charset and row"
smell of pre-Unicode (a.k.a. "MULE") representation of characters.
For now, I disabled boyer_moore for unibyte characters beyond 160,
because my reading of the code is that simple_translate and the
supporting code cannot handle that.  Maybe I'm wrong.




This bug report was last modified 12 years and 164 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.