From: Junio C Hamano Date: Thu, 04 Aug 2016 18:14:01 GMT Subject: Re: [PATCH v6 08/16] merge-recursive: allow write_tree_from_memory() to error out Message-ID: In-Reply-To: Johannes Schindelin writes: > 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 > --- > 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.