From: Chong Yidong Date: Sun, 17 Sep 2006 17:38:59 +0000 (+0000) Subject: * search.c (clear_regexp_cache): New function. X-Git-Tag: emacs-pretest-22.0.90~501 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e5b94d44df00cfc40845d4000796d419b123a1a7;p=emacs.git * search.c (clear_regexp_cache): New function. * syntax.c (Fmodify_syntax_entry): Clear regexp cache. --- diff --git a/src/ChangeLog b/src/ChangeLog index 9b74ac1ed89..a205a9cc6c3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2006-09-17 Chong Yidong + + * search.c (clear_regexp_cache): New function. + + * syntax.c (Fmodify_syntax_entry): Clear regexp cache. + 2006-09-16 Jan Dj,Ad(Brv * gtkutil.c (xg_get_file_with_chooser): Check diff --git a/src/search.c b/src/search.c index 2063e7d95ba..8b469a37b70 100644 --- a/src/search.c +++ b/src/search.c @@ -207,6 +207,19 @@ shrink_regexp_cache () } } +/* Clear the regexp cache. + There is no danger of memory leak here because re_compile_pattern + automagically manages the memory in each re_pattern_buffer struct, + based on its `allocated' and `buffer' values. */ +void +clear_regexp_cache () +{ + int i; + + for (i = 0; i < REGEXP_CACHE_SIZE; ++i) + searchbufs[i].regexp = Qnil; +} + /* Compile a regexp if necessary, but first check to see if there's one in the cache. PATTERN is the pattern to compile. diff --git a/src/syntax.c b/src/syntax.c index eee9151f878..052191d5fef 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -1039,6 +1039,11 @@ usage: (modify-syntax-entry CHAR NEWENTRY &optional SYNTAX-TABLE) */) check_syntax_table (syntax_table); SET_RAW_SYNTAX_ENTRY (syntax_table, XINT (c), Fstring_to_syntax (newentry)); + + /* We clear the regexp cache, since character classes can now have + different values from those in the compiled regexps.*/ + clear_regexp_cache (); + return Qnil; }