rerere: do not leak mmfile[] for a path with multiple stage #1 entries
[gitweb.git] / rerere.c
index e1d527c2506a461687ec89421f08b2de355dd10a..d665debf0f2a0ccc23d92c263f5a895442465442 100644 (file)
--- a/rerere.c
+++ b/rerere.c
@@ -337,8 +337,10 @@ static int handle_cache(const char *path, unsigned char *sha1, const char *outpu
                if (ce_namelen(ce) != len || memcmp(ce->name, path, len))
                        break;
                i = ce_stage(ce) - 1;
-               mmfile[i].ptr = read_sha1_file(ce->sha1, &type, &size);
-               mmfile[i].size = size;
+               if (!mmfile[i].ptr) {
+                       mmfile[i].ptr = read_sha1_file(ce->sha1, &type, &size);
+                       mmfile[i].size = size;
+               }
        }
        for (i = 0; i < 3; i++)
                if (!mmfile[i].ptr && !mmfile[i].size)