Commit 24e35725 authored by Geoff Simmons's avatar Geoff Simmons

Bugfix object fini with more than one data entry (string, backend, etc).

Fixes #1
parent b5303dfa
# looks like -*- vcl -*-
varnishtest "object fini when there is more than one data entry"
varnish v1 -vcl {
import ${vmod_selector};
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new s = selector.set();
s.add("foo", string="bar", backend=b, regex="baz",
integer=4711);
}
} -start
varnish v1 -vcl { backend b { .host = "${bad_ip}"; } }
varnish v1 -cli "vcl.list"
varnish v1 -cli "vcl.discard vcl1"
varnish v1 -cli "vcl.list"
......@@ -226,19 +226,20 @@ vmod_set__fini(struct vmod_selector_set **setp)
set = *setp;
*setp = NULL;
PT_Free(set->origo);
for (unsigned i = 0; i < set->nmembers; i++)
for (unsigned i = 0; i < set->nmembers; i++) {
free(set->members[i]);
for (int i = 0; i < __MAX_BITMAP; i++)
for (unsigned j = 0; j < set->nmembers; j++)
if (is_added(set, j, i)) {
struct entry *entry = set->table[j];
for (int j = 0; j < __MAX_BITMAP; j++)
if (is_added(set, i, j)) {
struct entry *entry = set->table[i];
CHECK_OBJ_NOTNULL(entry,
VMOD_SELECTOR_ENTRY_MAGIC);
free(entry->string);
if (entry->re != NULL)
VRE_free(&entry->re);
FREE_OBJ(entry);
break;
}
}
for (int i = 0; i < __MAX_BITMAP; i++)
vbit_destroy(set->bitmaps->bitmaps[i]);
FREE_OBJ(set->bitmaps);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment