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.