Closed andrewchambers closed 9 years ago
Incorrect pointer types in calloc, benign issue, but clang static analyser detected it.
diff --git a/map.c b/map.c index b44e898..89346ac 100644 --- a/map.c +++ b/map.c @@ -24,8 +24,8 @@ static uint32_t hash(char *p) { static Map *do_make_map(Map *parent, int size) { Map *r = malloc(sizeof(Map)); r->parent = parent; - r->key = calloc(size, sizeof(char **)); - r->val = calloc(size, sizeof(void **)); + r->key = calloc(size, sizeof(char *)); + r->val = calloc(size, sizeof(void *)); r->size = size; r->nelem = 0; r->nused = 0; @@ -34,16 +34,16 @@ static Map *do_make_map(Map *parent, int size) { static void maybe_rehash(Map *m) { if (!m->key) { - m->key = calloc(INIT_SIZE, sizeof(char **)); - m->val = calloc(INIT_SIZE, sizeof(void **)); + m->key = calloc(INIT_SIZE, sizeof(char *)); + m->val = calloc(INIT_SIZE, sizeof(void *)); m->size = INIT_SIZE; return; } if (m->nused < m->size * 0.7) return; int newsize = (m->nelem < m->size * 0.35) ? m->size : m->size * 2; - char **k = calloc(newsize, sizeof(char **)); - void **v = calloc(newsize, sizeof(void **)); + char **k = calloc(newsize, sizeof(char *)); + void **v = calloc(newsize, sizeof(void *)); int mask = newsize - 1; for (int i = 0; i < m->size; i++) { if (m->key[i] == NULL || m->key[i] == TOMBSTONE)
Thanks. Fixed in 2f2c8cde8ad663b7e94e88e8687a609a6f3dd169.
Incorrect pointer types in calloc, benign issue, but clang static analyser detected it.