Re: [PATCH 1/2] submodule--helper, module_clone: always operate on absolute paths
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 1, 2016, 20:39 UTC
- Message-ID
- <xmqqy48xgj2p.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <xmqq37r5i0tv.fsf@gitster.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 15 quoted lines
> From: Junio C Hamano <gitster@pobox.com>
> Date: Fri, 1 Apr 2016 12:23:16 -0700
> Subject: [PATCH] submodule--helper: do not borrow absolute_path() result for too long
>
> absolute_path() is designed to allow its callers to take a brief
> peek of the result (typically, to be fed to functions like
> strbuf_add() and relative_path() as a parameter) without having to
> ...
> @@ -199,8 +198,7 @@ static int module_clone(int argc, const char **argv, const char *prefix)
> die(_("submodule--helper: unspecified or empty --path"));
>
> strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name);
> - sm_gitdir_rel = strbuf_detach(&sb, NULL);
> - sm_gitdir = absolute_path(sm_gitdir_rel);
> + sm_gitdir = xstrdup(absolute_path(sb.buf));Just to prevent others from wasting time scratching their heads, we need
strbuf_reset(&sb);
here, as the strbuf will be reused later and is expected to be empty at this point.
Show 12 quoted lines
>
> if (!is_absolute_path(path)) {
> strbuf_addf(&sb, "%s/%s", get_git_work_tree(), path);
> @@ -245,7 +243,7 @@ static int module_clone(int argc, const char **argv, const char *prefix)
> relative_path(path, sm_gitdir, &rel_path));
> strbuf_release(&sb);
> strbuf_release(&rel_path);
> - free(sm_gitdir_rel);
> + free(sm_gitdir);
> free(path);
> free(p);
> return 0;