summaryrefslogtreecommitdiff
path: root/src/search.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1998-05-24 23:24:25 +0000
committerRichard M. Stallman <rms@gnu.org>1998-05-24 23:24:25 +0000
commit6efc788795e564750837da362acf9326febc1ff1 (patch)
tree95d6cd8baa2e8207dc79e4feb82c98a64affdb5a /src/search.c
parenteec7b73dba4ce7bbddf175f65966c5bb1e572fce (diff)
downloademacs-6efc788795e564750837da362acf9326febc1ff1.tar.gz
(shrink_regexp_cache): New function.
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/search.c b/src/search.c
index 175ae8a3f65..d9d445afad0 100644
--- a/src/search.c
+++ b/src/search.c
@@ -182,6 +182,23 @@ compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte)
cp->regexp = Fcopy_sequence (pattern);
}
+/* Shrink each compiled regexp buffer in the cache
+ to the size actually used right now.
+ This is called from garbage collection. */
+
+void
+shrink_regexp_cache ()
+{
+ struct regexp_cache *cp, **cpp;
+
+ for (cp = searchbuf_head; cp != 0; cp = cp->next)
+ {
+ cp->buf.allocated = cp->buf.used;
+ cp->buf.buffer
+ = (unsigned char *) realloc (cp->buf.buffer, cp->buf.used);
+ }
+}
+
/* Compile a regexp if necessary, but first check to see if there's one in
the cache.
PATTERN is the pattern to compile.