Commit Diff


commit - 83a7ae6dd3b3810c46ad466d6c30a9b674caaa99
commit + 8c4eabf2088807f8965d1fa049e59f4402a3732f
blob - d111b34e06b915085e9da4644248bb97c9b3973d
blob + a2abc10f3ccc865a84eac6dbce1887f5fdf60a6b
--- lib/object.c
+++ lib/object.c
@@ -1553,17 +1553,19 @@ got_object_tree_entry_dup(struct got_tree_entry **new_
 	(*new_te)->name = strdup(te->name);
 	if ((*new_te)->name == NULL) {
 		err = got_error_from_errno();
-		got_object_tree_entry_close(*new_te);
-		return err;
+		goto done;
 	}
 
 	(*new_te)->id = got_object_id_dup(te->id);
 	if ((*new_te)->id == NULL) {
 		err = got_error_from_errno();
-		got_object_tree_entry_close(*new_te);
-		return err;
+		goto done;
 	}
-
-	return NULL;
+done:
+	if (err) {
+		got_object_tree_entry_close(*new_te);
+		*new_te = NULL;
+	}
+	return err;
 }