Subject: Re: [PATCH 02/18] setup: stop using `the_repository` in `is_inside_worktree()`

From: Tian Yuchen <[email-masked]>
Date: Mon, 18 May 2026 00:18:36 +0800

On 4/20/26 16:22, Patrick Steinhardt wrote:

I've noticed something that does not entirely convince me:

> @@ -477,11 +476,13 @@ int is_inside_git_dir(void)
>  	return inside_git_dir;
>  }
>  
> -int is_inside_work_tree(void)
> +int is_inside_work_tree(struct repository *repo)
>  {
> -	if (inside_work_tree < 0)
> -		inside_work_tree = is_inside_dir(repo_get_work_tree(the_repository));
> -	return inside_work_tree;
> +	static struct strbuf buf = STRBUF_INIT;
> +	const char *worktree = repo_get_work_tree(repo);
> +	if (!worktree)
> +		return 0;
> +	return is_inside_dir(strbuf_realpath(&buf, worktree, 1));
>  }
> 

Is it correct to statically allocate memory for the cache here? Could 
this lead
to memory overwriting issues in a multi-threaded environment?

p.s. I'm not sure if this one is better:

> 
> int is_inside_work_tree(struct repository *repo)
> {
> 	struct strbuf buf = STRBUF_INIT;
> 	const char *worktree = repo_get_work_tree(repo);
> 	int ret;
> 
> 	if (!worktree)
> 		return 0;
> 
> 	ret = is_inside_dir(strbuf_realpath(&buf, worktree, 1));
> 	strbuf_release(&buf);
> 	return ret;
> }

Thanks! yuchen