X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fjmap%2Fjmap.c;h=8982a7155ca73bc7059c441d4cdff539e13c40f1;hp=afac2fc9ff3adb1bc83f44ee26566be5c439f182;hb=6abc867fce8c3eba40eb26092d31e34b47dd9165;hpb=09fde153ba7a68715dcad3b53cbbb8804c3d2356 diff --git a/ccan/jmap/jmap.c b/ccan/jmap/jmap.c index afac2fc9..8982a715 100644 --- a/ccan/jmap/jmap.c +++ b/ccan/jmap/jmap.c @@ -1,16 +1,20 @@ +/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #include #include #include #include -struct jmap *jmap_new(void) +struct jmap *jmap_new_(size_t size) { struct jmap *map; - /* Judy uses unsigned long for Word_t, we use size_t. */ - BUILD_ASSERT(sizeof(size_t) == sizeof(unsigned long)); + /* Judy uses unsigned long for Word_t, we use unsigned long. */ + BUILD_ASSERT(sizeof(Word_t) == sizeof(unsigned long)); + /* We also put pointers into Judy, in jmap_types.h */ + BUILD_ASSERT(sizeof(Word_t) >= sizeof(void *)); - map = malloc(sizeof(*map)); + assert(size >= sizeof(*map)); + map = malloc(size); if (map) { map->judy = NULL; memset(&map->err, 0, sizeof(map->err)); @@ -23,7 +27,7 @@ struct jmap *jmap_new(void) return map; } -const char *jmap_error_(struct jmap *map) +const char *jmap_error_str_(struct jmap *map) { char *str; free((char *)map->errstr); @@ -37,9 +41,9 @@ const char *jmap_error_(struct jmap *map) return str; } -void jmap_free(const 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); }