submodule.c: free() memory from xgetcwd()

Fix a memory leak in code added in bf0231c6614 (rev-parse: add --show-superproject-working-tree, 2017-03-08), we should never have made the result of xgetcwd() a "const char *", as we return a strbuf_detach()'d value. Let's fix that and free() it when we're done with it. We can't mark any tests passing passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true" as a result of this change, but e.g. "t/t1500-rev-parse.sh" now gets closer to passing. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Jul 1, 2022 at 12:42 UTC bc57ba1d54f3133cd46481532d97a8346b62d8aa
1 file changed +2 -1
submodule.c
+2 -1
@@ -2388,7 +2388,7 @@ int get_superproject_working_tree(struct strbuf *buf)
2388 struct child_process cp = CHILD_PROCESS_INIT;
2389 struct strbuf sb = STRBUF_INIT;
2390 struct strbuf one_up = STRBUF_INIT;
2391 - const char *cwd = xgetcwd();
2391 + char *cwd = xgetcwd();
2392 int ret = 0;
2393 const char *subpath;
2394 int code;
@@ -2451,6 +2451,7 @@ int get_superproject_working_tree(struct strbuf *buf)
2451 ret = 1;
2452 free(super_wt);
2453 }
2454 + free(cwd);
2455 strbuf_release(&sb);
2456
2457 code = finish_command(&cp);