Returning before freeing the allocated buffer is suboptimal; as with
elsewhere in the same function, make sure buf gets free'd.

Signed-off-by: Elijah Newren <new...@gmail.com>
---
 merge-recursive.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/merge-recursive.c b/merge-recursive.c
index 12300131fc..1163508811 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -934,9 +934,11 @@ static int update_file_flags(struct merge_options *opt,
                }
 
                buf = read_object_file(&contents->oid, &type, &size);
-               if (!buf)
-                       return err(opt, _("cannot read object %s '%s'"),
-                                  oid_to_hex(&contents->oid), path);
+               if (!buf) {
+                       ret = err(opt, _("cannot read object %s '%s'"),
+                                 oid_to_hex(&contents->oid), path);
+                       goto free_buf;
+               }
                if (type != OBJ_BLOB) {
                        ret = err(opt, _("blob expected for %s '%s'"),
                                  oid_to_hex(&contents->oid), path);
-- 
2.22.0.559.g28a8880890.dirty

Reply via email to