GNU bug report logs -
#13084
boyer_moore crashes with certain characters in the case table
Previous Next
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
Message #8 received at 13084 <at> debbugs.gnu.org (full text, mbox):
> 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.