{"thread":{"id":"33577","subject":"[PATCH] submodule.c: duplicate real_path's return value","startedAt":"2013-04-23T11:00:02Z","lastAt":"2013-04-23T11:00:02Z","messageCount":1,"participants":["Nguyễn Thái Ngọc Duy"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"215202","messageId":"1366714802-12010-1-git-send-email-pclouds@gmail.com","threadId":"33577","inReplyTo":null,"subject":"[PATCH] submodule.c: duplicate real_path's return value","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2013-04-23T11:00:02Z","receivedAt":"2013-04-23T11:00:02Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"real_path returns the pointer to an internal buffer, which may be\noverwritten by the next real_path call. Duplicate the return value for\nsafety.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n Apply on top of jl/submodule-mv.\n \n Junio, I think this is the reason some tests failed when you merged\n nd/magic-pathspecs in (I suspect you needed to do parse_pathspec\n call, which may do real_path internaly).\n\n I think \"bug\" fix like this should go in early, hence this patch. I'm\n going to rebase nd/magic-pathspecs after this series graduates to\n master anyway, feel free to reject.\n\n submodule.c | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/submodule.c b/submodule.c\nindex 6b01a02..9f442d8 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -1102,7 +1102,8 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)\n \tstruct strbuf configfile_name = STRBUF_INIT;\n \tstruct strbuf gitfile_content = STRBUF_INIT;\n \tstruct strbuf gitfile_name = STRBUF_INIT;\n-\tconst char *real_work_tree = real_path(work_tree);\n+\tchar *real_work_tree = xstrdup(real_path(work_tree));\n+\tchar *to_free = real_work_tree;\n \tconst char *pathspec[] = { real_work_tree, git_dir, NULL };\n \tconst char *max_prefix = common_prefix(pathspec);\n \tFILE *fp;\n@@ -1157,4 +1158,5 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)\n \n \tstrbuf_release(&core_worktree_setting);\n \tstrbuf_release(&configfile_name);\n+\tfree(to_free);\n }\n-- \n1.8.2.82.gc24b958\n"}]}