string: Clean up for_each_line() and related functions.
[paraslash.git] / filter.c
index bc9952ae95d9c08d3df61a2bbc8e3ecd4329487f..40e3779eab4d22620125294e5024a443b18e6296 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -7,7 +7,6 @@
 /** \file filter.c The stand-alone filter program. */
 
 #include <regex.h>
-#include <stdbool.h>
 
 #include "para.h"
 #include "filter.cmdline.h"
@@ -162,13 +161,14 @@ out_cleanup:
                f = filters + fn->filter_num;
                if (f->close)
                        f->close(fn);
-               btr_free_node(fn->btrn);
-               free(fn->conf);
+               btr_remove_node(&fn->btrn);
+               if (f->free_config)
+                       f->free_config(fn->conf);
                free(fn);
        }
        free(fns);
-       btr_free_node(sit->btrn);
-       btr_free_node(sot->btrn);
+       btr_remove_node(&sit->btrn);
+       btr_remove_node(&sot->btrn);
 out:
        if (ret < 0)
                PARA_EMERG_LOG("%s\n", para_strerror(-ret));