Ar an naoiú lá de mí na Nollaig, scríobh Stephen J. Turnbull:
Aidan Kehoe writes:
> In local testing, I can reproduce your bug; and it seems that Stephen’s
> patch of
http://mid.gmane.org/87hcixwkh4.fsf@uwakimon.sk.tsukuba.ac.jp ,
> which he has yet to commit, eliminates it. We’d love confirmation of this
> from you; despite Stephen’s ‘do not apply this patch’ in his message, the
> change is easy to apply.
Now that I've got a test that reproduces, I'll apply it tomorrow.
Note that the reason for third parties not to apply is that I intend
to make a whitespace change, and their CVS checkouts will have
conflicts due to that since the posted patch ignores whitespace.
However, there may very well be another bug lurking, as the backtrace
I was looking at was in a function that a pure ASCII search pattern
should never reach.
The change that uncovered the bug was this:
;; LATIN CAPITAL LETTER I WITH DOT ABOVE
(put-case-table 'downcase
(make-char 'latin-iso8859-9 #xdd)
?i (standard-case-table))
;; LATIN SMALL LETTER DOTLESS I
(put-case-table 'upcase
(make-char 'latin-iso8859-9 #xfd)
?I (standard-case-table))
The architecure of the case tables is unclear to me--and smells buggy--but
while
(upcase
(format "iI%c%c" (make-char 'latin-iso8859-9 #xdd) (make-char
'latin-iso8859-9 #xfd)))
(downcase
(format "iI%c%c" (make-char 'latin-iso8859-9 #xdd) (make-char
'latin-iso8859-9 #xfd)))
both function correctly, TRT_TABLE_OF (XCASE_TABLE_EQV (buf->case_table),
'I') gives the Turkish character, and I can’t see any way to prevent
that. That TRT_TABLE_OF result means the code is looking for a Mule pattern.
(If somebody cares to look, the function is search.c,
simple_search(); if
only ASCII is in use, boyer_moore() should always be used instead.)
>
> Ar an t-ochtú lá de mí na Nollaig, scríobh Klaus Reim:
>
> > Hi!
> >
> > I encountered a fatal error during an isearch-forward
> > within a several 10000 lines buffer.
> > Eventually it turned out that "size does not matter":
> > I was able to boil the problem down to a mere 3-bytes buffer
> > containing the letters "IAI".
> > If you place point just before the 'A', and then
> > do a "C-s C-w" sequence, xemacs dies from:
Hm, interesting.
> >
> > Fatal error: assertion failed, file search.c, line 1487,
> > (this_pos) > ((Bytebpos) 1) && this_pos <=
((buf)->text->z + 0)
> >
> > instead of marking the "AI".
> > This occurs for example in today's cvs-head.
> > To be more precise, the assertion triggers for
> > CVS date-tag "-D 2007-08-27" and later, while it does not for
"-D 2007-08-26"
> > Among the few files changed in that interval, it turned out
> > that revision 1.9 of "lisp/mule/latin.el" causes the problem
> > (or maybe makes an older problem evident).
> > I built my version of xemacs --with-mule.
This absolutely cannot happen without Mule, since that assert is only
enabled with Mule.
> >
> > Find below my system info (saw the same effect on
> > a redhat system as well, with the same build configuration).
> >
> > regards,
> > Klaus
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta