mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-14 09:39:42 +00:00
* search.c (compile_pattern): If a cache entry has a nil regexp, fill in that
entry instead of clobbering a previously cached string regexp.
This commit is contained in:
parent
15c9cf8193
commit
f1b9c7c1ce
@ -1,3 +1,9 @@
|
||||
2000-02-03 Ken Raeburn <raeburn@raeburn.org>
|
||||
|
||||
* search.c (compile_pattern): If a cache entry has a nil regexp,
|
||||
fill in that entry instead of clobbering a previously cached
|
||||
string regexp.
|
||||
|
||||
2000-02-02 Ken Raeburn <raeburn@raeburn.org>
|
||||
|
||||
* puresize.h (BASE_PURESIZE): Increase to 610000.
|
||||
|
12
src/search.c
12
src/search.c
@ -219,6 +219,13 @@ compile_pattern (pattern, regp, translate, posix, multibyte)
|
||||
for (cpp = &searchbuf_head; ; cpp = &cp->next)
|
||||
{
|
||||
cp = *cpp;
|
||||
/* Entries are initialized to nil, and may be set to nil by
|
||||
compile_pattern_1 if the pattern isn't valid. Don't apply
|
||||
XSTRING in those cases. However, compile_pattern_1 is only
|
||||
applied to the cache entry we pick here to reuse. So nil
|
||||
should never appear before a non-nil entry. */
|
||||
if (cp->regexp == Qnil)
|
||||
goto compile_it;
|
||||
if (XSTRING (cp->regexp)->size == XSTRING (pattern)->size
|
||||
&& !NILP (Fstring_equal (cp->regexp, pattern))
|
||||
&& EQ (cp->buf.translate, (! NILP (translate) ? translate : make_number (0)))
|
||||
@ -226,9 +233,12 @@ compile_pattern (pattern, regp, translate, posix, multibyte)
|
||||
&& cp->buf.multibyte == multibyte)
|
||||
break;
|
||||
|
||||
/* If we're at the end of the cache, compile into the last cell. */
|
||||
/* If we're at the end of the cache, compile into the nil cell
|
||||
we found, or the last (least recently used) cell with a
|
||||
string value. */
|
||||
if (cp->next == 0)
|
||||
{
|
||||
compile_it:
|
||||
compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte);
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user