mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
strbuf: avoid static variables in strbuf_add_commented_lines()
In strbuf_add_commented_lines(), we have to convert the single-byte comment_line_char into a string to pass to add_lines(). We cache the created string using a static-local variable. But this makes the function non-reentrant, and it's doubtful that this provides any real performance benefit given that we know the string always contains a single character. So let's just create it from scratch each time, and to give the compiler the maximal opportunity to make it fast we'll ditch the over-complicated xsnprintf() and just assign directly into the array. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
db7f93093f
commit
3b45450db6
6
strbuf.c
6
strbuf.c
@@ -361,10 +361,10 @@ static void add_lines(struct strbuf *out,
|
|||||||
void strbuf_add_commented_lines(struct strbuf *out, const char *buf,
|
void strbuf_add_commented_lines(struct strbuf *out, const char *buf,
|
||||||
size_t size, char comment_line_char)
|
size_t size, char comment_line_char)
|
||||||
{
|
{
|
||||||
static char prefix[2];
|
char prefix[2];
|
||||||
|
|
||||||
if (prefix[0] != comment_line_char)
|
prefix[0] = comment_line_char;
|
||||||
xsnprintf(prefix, sizeof(prefix), "%c", comment_line_char);
|
prefix[1] = '\0';
|
||||||
add_lines(out, prefix, buf, size, 1);
|
add_lines(out, prefix, buf, size, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user