From 624b19b492df58075e64572bb0630693f447f2ce Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 22 Sep 2014 21:52:15 +0000 Subject: Gracefully handle memory allocation failure. 100% test coverage for hash.c. git-svn-id: http://svn.drobilla.net/zix/trunk@85 df6676b4-ccc9-40e5-b5d6-7c4628a128e3 --- zix/hash.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'zix/hash.c') diff --git a/zix/hash.c b/zix/hash.c index b24ee78..5d2b18c 100644 --- a/zix/hash.c +++ b/zix/hash.c @@ -1,5 +1,5 @@ /* - Copyright 2011 David Robillard + Copyright 2011-2014 David Robillard Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -58,13 +58,18 @@ zix_hash_new(ZixHashFunc hash_func, size_t value_size) { ZixHash* hash = (ZixHash*)malloc(sizeof(ZixHash)); - hash->hash_func = hash_func; - hash->equal_func = equal_func; - hash->n_buckets = &sizes[0]; - hash->value_size = value_size; - hash->count = 0; - hash->buckets = (ZixHashEntry**)calloc(*hash->n_buckets, - sizeof(ZixHashEntry*)); + if (hash) { + hash->hash_func = hash_func; + hash->equal_func = equal_func; + hash->n_buckets = &sizes[0]; + hash->value_size = value_size; + hash->count = 0; + if (!(hash->buckets = (ZixHashEntry**)calloc(*hash->n_buckets, + sizeof(ZixHashEntry*)))) { + free(hash); + return NULL; + } + } return hash; } -- cgit v1.2.1