jmap: fix jmap_free, tests.
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 23 Aug 2011 02:30:13 +0000 (12:00 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 23 Aug 2011 02:30:13 +0000 (12:00 +0930)
Memory leak in tests revealed bug in jmap_free.  Also, out-by-one
error.

ccan/jmap/jmap.c
ccan/jmap/test/run-ptridx-type.c
ccan/jmap/test/run-uintidx-type.c

index 38b912f..78b7ba2 100644 (file)
@@ -43,6 +43,6 @@ const char *jmap_error_(struct jmap *map)
 void jmap_free(const struct jmap *map)
 {
        free((char *)map->errstr);
-       Judy1FreeArray((PPvoid_t)&map->judy, PJE0);
+       JudyLFreeArray((PPvoid_t)&map->judy, PJE0);
        free((void *)map);
 }
index aa715cf..20a604a 100644 (file)
@@ -17,7 +17,7 @@ static int cmp_ptr(const void *a, const void *b)
 int main(int argc, char *argv[])
 {
        struct jmap_foo *map;
-       struct foo *foo[NUM], **foop;
+       struct foo *foo[NUM+1], **foop;
        struct idx *idx[NUM+1], *index;
 
        unsigned int i;
@@ -97,5 +97,8 @@ int main(int argc, char *argv[])
        ok1(jmap_foo_error(map) == NULL);
        jmap_foo_free(map);
 
+       for (i = 0; i < NUM+1; i++)
+               free(foo[i]);
+
        return exit_status();
 }
index 0dda6ed..2a37142 100644 (file)
@@ -126,5 +126,8 @@ int main(int argc, char *argv[])
        ok1(jmap_foo_error(map) == NULL);
        jmap_foo_free(map);
 
+       for (i = 0; i < NUM; i++)
+               free(foo[i]);
+
        return exit_status();
 }