summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-09-22 04:38:10 +0000
committerRichard M. Stallman <rms@gnu.org>1996-09-22 04:38:10 +0000
commit07e6f94a38b051a1dceb5556f548f52c26866d15 (patch)
tree50b9fa6c92dd1dae3af0ef9dfc4df032eb61cb0f
parente45c5b737cd186c3f1a4f00846b3c27ea6feeea8 (diff)
downloademacs-07e6f94a38b051a1dceb5556f548f52c26866d15.tar.gz
(REGEXP_CACHE_SIZE): Increase to 20.
(compile_pattern): Check for size match before calling Fstring_equal.
-rw-r--r--src/search.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/search.c b/src/search.c
index 6f4355f5b88..5713e53fd90 100644
--- a/src/search.c
+++ b/src/search.c
@@ -30,11 +30,12 @@ Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include "regex.h"
-#define REGEXP_CACHE_SIZE 5
+#define REGEXP_CACHE_SIZE 20
/* If the regexp is non-nil, then the buffer contains the compiled form
of that regexp, suitable for searching. */
-struct regexp_cache {
+struct regexp_cache
+{
struct regexp_cache *next;
Lisp_Object regexp;
struct re_pattern_buffer buf;
@@ -156,7 +157,8 @@ compile_pattern (pattern, regp, translate, posix)
for (cpp = &searchbuf_head; ; cpp = &cp->next)
{
cp = *cpp;
- if (!NILP (Fstring_equal (cp->regexp, pattern))
+ if (XSTRING (cp->regexp)->size == XSTRING (pattern)->size
+ && !NILP (Fstring_equal (cp->regexp, pattern))
&& cp->buf.translate == translate
&& cp->posix == posix)
break;