diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-04-15 13:25:50 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-04-15 13:27:04 -0700 |
commit | ed44fd045a8a4bcf7f30a47e4fc6aba761faaf78 (patch) | |
tree | ccc8afe7eb85ec89347047f8e3fb5ff7f4c2f6a6 /strbuf.c | |
parent | e0d48279d5a96bc02edac72c1d28fc38aed37c15 (diff) | |
parent | 4d8b32a2e1758236c4c1b714f179892e3bce982c (diff) | |
download | git-ed44fd045a8a4bcf7f30a47e4fc6aba761faaf78.tar.gz git-ed44fd045a8a4bcf7f30a47e4fc6aba761faaf78.tar.xz |
Merge v1.7.5-rc2 into jn/format-patch-doc
This is to sync with the recent updates in Documentation/SubmittingPatches
and Documentation/format-patch.txt
Diffstat (limited to 'strbuf.c')
-rw-r--r-- | strbuf.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -195,24 +195,29 @@ void strbuf_adddup(struct strbuf *sb, size_t pos, size_t len) void strbuf_addf(struct strbuf *sb, const char *fmt, ...) { - int len; va_list ap; + va_start(ap, fmt); + strbuf_vaddf(sb, fmt, ap); + va_end(ap); +} + +void strbuf_vaddf(struct strbuf *sb, const char *fmt, va_list ap) +{ + int len; + va_list cp; if (!strbuf_avail(sb)) strbuf_grow(sb, 64); - va_start(ap, fmt); - len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); - va_end(ap); + va_copy(cp, ap); + len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, cp); + va_end(cp); if (len < 0) - die("your vsnprintf is broken"); + die("BUG: your vsnprintf is broken (returned %d)", len); if (len > strbuf_avail(sb)) { strbuf_grow(sb, len); - va_start(ap, fmt); len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); - va_end(ap); - if (len > strbuf_avail(sb)) { - die("this should not happen, your snprintf is broken"); - } + if (len > strbuf_avail(sb)) + die("BUG: your vsnprintf is broken (insatiable)"); } strbuf_setlen(sb, sb->len + len); } |