From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Check library calls for error codes being returned. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- libfrog/bitmap.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/libfrog/bitmap.c b/libfrog/bitmap.c index be95965f..a75d085a 100644 --- a/libfrog/bitmap.c +++ b/libfrog/bitmap.c @@ -72,21 +72,30 @@ bitmap_alloc( struct bitmap **bmapp) { struct bitmap *bmap; + int ret; bmap = calloc(1, sizeof(struct bitmap)); if (!bmap) return errno; bmap->bt_tree = malloc(sizeof(struct avl64tree_desc)); if (!bmap->bt_tree) { - free(bmap); - return errno; + ret = errno; + goto out; } - pthread_mutex_init(&bmap->bt_lock, NULL); + ret = pthread_mutex_init(&bmap->bt_lock, NULL); + if (ret) + goto out_tree; + avl64_init_tree(bmap->bt_tree, &bitmap_ops); *bmapp = bmap; return 0; +out_tree: + free(bmap->bt_tree); +out: + free(bmap); + return ret; } /* Free a bitmap. */