Commit Diff


commit - 052d4dc305cc8f7124d5040f376d19abdedf5f68
commit + 1e51f5b9bacbc8ebbd486d68ccfbf11556d4607d
blob - 0aecd73351f6e1714eeb68839bda43f9fbac7e10
blob + a9c67e47ae7b90376c70fcca278cd0d96f40ca2c
--- lib/privsep.c
+++ lib/privsep.c
@@ -509,7 +509,7 @@ got_privsep_recv_tree_obj(struct got_tree_object **tre
 get_more:
 	err = read_imsg(ibuf);
 	if (err)
-		return err;
+		goto done;
 
 	while (1) {
 		struct imsg imsg;
@@ -598,9 +598,10 @@ get_more:
 
 		imsg_free(&imsg);
 	}
-
+done:
 	if (*tree && (*tree)->nentries != nentries) {
-		err = got_error(GOT_ERR_PRIVSEP_LEN);
+		if (err == NULL)
+			err = got_error(GOT_ERR_PRIVSEP_LEN);
 		got_object_tree_close(*tree);
 		*tree = NULL;
 	}