t1300: `--unset-all` can leave an empty section behind (bug)
[gitweb.git] / list-objects-filter-options.c
index 52bdec75bf9a451a92291ae96adfa95d8d2f7bf8..4c5b34e9499433e12b55a34f425aace38d9ecfaa 100644 (file)
@@ -74,8 +74,19 @@ int opt_parse_list_objects_filter(const struct option *opt,
 {
        struct list_objects_filter_options *filter_options = opt->value;
 
-       assert(arg);
-       assert(!unset);
+       if (unset || !arg) {
+               list_objects_filter_release(filter_options);
+               return 0;
+       }
 
        return parse_list_objects_filter(filter_options, arg);
 }
+
+void list_objects_filter_release(
+       struct list_objects_filter_options *filter_options)
+{
+       free(filter_options->filter_spec);
+       free(filter_options->sparse_oid_value);
+       free(filter_options->sparse_path_value);
+       memset(filter_options, 0, sizeof(*filter_options));
+}