Mercurial > libjeffpc
changeset 675:cf7308f74b62
val: use a goto for error handling in __val_alloc_array
This will make the next commit simpler.
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Sun, 24 Feb 2019 10:38:23 -0500 |
parents | a8663230bd14 |
children | 2730e7a80abd |
files | val_array.c |
diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/val_array.c Thu Feb 21 19:18:52 2019 -0500 +++ b/val_array.c Sun Feb 24 10:38:23 2019 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> + * Copyright (c) 2018-2019 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -28,21 +28,24 @@ bool heap) { struct val *val; + size_t i; val = __val_alloc(VT_ARRAY); - if (IS_ERR(val)) { - size_t i; + if (IS_ERR(val)) + goto err; - for (i = 0; i < nelem; i++) - val_putref(vals[i]); + val->_set_array.vals = vals; + val->_set_array.nelem = nelem; + val->static_alloc = !heap; - if (heap) - free(vals); - } else { - val->_set_array.vals = vals; - val->_set_array.nelem = nelem; - val->static_alloc = !heap; - } + return val; + +err: + for (i = 0; i < nelem; i++) + val_putref(vals[i]); + + if (heap) + free(vals); return val; }