aboutsummaryrefslogtreecommitdiff
path: root/pattern.c
diff options
context:
space:
mode:
Diffstat (limited to 'pattern.c')
-rw-r--r--pattern.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/pattern.c b/pattern.c
index a065f3f..785e5ba 100644
--- a/pattern.c
+++ b/pattern.c
@@ -613,4 +613,25 @@ def_t *bp_definition(file_t *f, const char *str)
return def;
}
+//
+// Deallocate memory referenced inside a pattern struct
+//
+void destroy_pat(pat_t *pat)
+{
+ switch (pat->type) {
+ case VM_STRING: case VM_REF:
+ xfree(&pat->args.s);
+ break;
+ case VM_CAPTURE:
+ if (pat->args.capture.name)
+ xfree(&pat->args.capture.name);
+ break;
+ case VM_REPLACE:
+ if (pat->args.replace.text)
+ xfree(&pat->args.replace.text);
+ break;
+ default: break;
+ }
+}
+
// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1