git_snpath(): retire and replace with strbuf_git_path()
In the previous patch, git_snpath() is modified to allocate a new strbuf buffer because vsnpath() needs that. But that makes it awkward because git_snpath() receives a pre-allocated buffer from outside and has to copy data back. Rename it to strbuf_git_path() and make it receive strbuf directly. Using git_path() in update_refs_for_switch() which used to call git_snpath() is safe because that function and all of its callers do not keep any pointer to the round-robin buffer pool allocated by get_pathname(). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
dcf692625a
commit
1a83c240f2
11
path.c
11
path.c
@ -70,19 +70,12 @@ static void vsnpath(struct strbuf *buf, const char *fmt, va_list args)
|
||||
strbuf_cleanup_path(buf);
|
||||
}
|
||||
|
||||
char *git_snpath(char *buf, size_t n, const char *fmt, ...)
|
||||
void strbuf_git_path(struct strbuf *sb, const char *fmt, ...)
|
||||
{
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vsnpath(&sb, fmt, args);
|
||||
vsnpath(sb, fmt, args);
|
||||
va_end(args);
|
||||
if (sb.len >= n)
|
||||
strlcpy(buf, bad_path, n);
|
||||
else
|
||||
memcpy(buf, sb.buf, sb.len + 1);
|
||||
strbuf_release(&sb);
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *git_pathdup(const char *fmt, ...)
|
||||
|
Reference in New Issue
Block a user