summaryrefslogtreecommitdiff
path: root/sequencer.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-12-12 14:25:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-12-12 17:09:35 (GMT)
commita9bfbc5b698103b1553e1023c4f77001cc861e79 (patch)
treec7357e4a4a70b5fc712770da1461717d4c395d06 /sequencer.c
parent26db0f2e3afc043e184a5e0ce5eb7c53aeb1f644 (diff)
downloadgit-a9bfbc5b698103b1553e1023c4f77001cc861e79.zip
git-a9bfbc5b698103b1553e1023c4f77001cc861e79.tar.gz
git-a9bfbc5b698103b1553e1023c4f77001cc861e79.tar.bz2
compat/snprintf: don't look at va_list twice
If you define SNPRINTF_RETURNS_BOGUS, we use a special git_vsnprintf wrapper assumes that vsnprintf returns "-1" instead of the number of characters that you would need to store the result. To do this, it invokes vsnprintf multiple times, growing a heap buffer until we have enough space to hold the result. However, this means we evaluate the va_list parameter multiple times, which is generally a bad thing (it may be modified by calls to vsnprintf, yielding undefined behavior). Instead, we must va_copy it and hand the copy to vsnprintf, so we always have a pristine va_list. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sequencer.c')
0 files changed, 0 insertions, 0 deletions