Thread (1 message) 1 message, 1 author, 2016-08-04

Re: [PATCH v6 08/16] merge-recursive: allow write_tree_from_memory() to error out

From: Junio C Hamano <hidden>
Date: 2016-08-04 18:14:39

Johannes Schindelin [off-list ref] writes:
quoted hunk
It is possible that a tree cannot be written (think: disk full). We
will want to give the caller a chance to clean up instead of letting
the program die() in such a case.

Signed-off-by: Johannes Schindelin <redacted>
---
 merge-recursive.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c
index 2be1e17..1f86338 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1888,8 +1888,8 @@ int merge_trees(struct merge_options *o,
 	else
 		clean = 1;
 
-	if (o->call_depth)
-		*result = write_tree_from_memory(o);
+	if (o->call_depth && !(*result = write_tree_from_memory(o)))
+		return -1;
I'll let it pass, but we avoid assignment in a conditional part for
a good reason: it can become unreadable pretty quickly.  Writing it
in a long-hand, e.g.

	if (o->call_depth) {
        	*result = write_tree_from_memory(o);
                if (!*result)
                	return -1;
	}

future-proofs against the "o->call_depth" condition part and
"write_tree_from_memory(o)" operation part becoming longer, possibly
needing multiple statements.

The change itself is correct.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help