diff --git a/builtin/update-index.c b/builtin/update-index.c
index f14bc908309c0bb01ec251d71f26b490b294622c..a6a23fa1f3c7782566d7fcfe470dd424b876e4a5 100644 (file)
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -100,8 +100,10 @@ static int add_one_path(struct cache_entry *old, const char *path, int len, stru
ce->ce_mode = ce_mode_from_stat(old, st->st_mode);
if (index_path(ce->sha1, path, st,
- info_only ? 0 : HASH_WRITE_OBJECT))
+ info_only ? 0 : HASH_WRITE_OBJECT)) {
+ free(ce);
return -1;
+ }
option = allow_add ? ADD_CACHE_OK_TO_ADD : 0;
option |= allow_replace ? ADD_CACHE_OK_TO_REPLACE : 0;
if (add_cache_entry(ce, option))