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;
 }