git-commit-vandalism/compat
Jeff King a9bfbc5b69 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>
2011-12-12 09:09:35 -08:00
..
fnmatch Fix more typos/spelling in comments 2009-04-22 19:03:39 -07:00
nedmalloc Typos in code comments, an error message, documentation 2010-08-22 13:25:08 -07:00
regex Fix compat/regex ANSIfication on MinGW 2010-08-26 09:25:53 -07:00
vcbuild Merge branch 'rj/msvc-fix' 2010-12-16 12:55:36 -08:00
win32 Merge branch 'rj/msvc-fix' 2010-12-16 12:55:36 -08:00
basename.c compat: add a basename() compatibility function 2009-05-31 17:57:59 -07:00
bswap.h Don't redefine htonl and ntohl on big-endian 2010-03-31 14:21:39 -07:00
cygwin.c Fix more typos/spelling in comments 2009-04-22 19:03:39 -07:00
cygwin.h cygwin: Use native Win32 API for stat 2008-09-30 14:30:06 -07:00
fopen.c compat/fopen.c: avoid clobbering the system defined fopen macro 2008-05-08 17:43:01 -07:00
hstrerror.c Add a local implementation of hstrerror for the system which do not have it 2007-06-15 22:48:34 -07:00
inet_ntop.c inet_ntop: fix a couple of old-style decls 2010-11-04 16:53:50 -07:00
inet_pton.c compat: add inet_pton and inet_ntop prototypes 2010-11-04 16:53:49 -07:00
memmem.c optimize compat/ memmem() 2009-03-02 18:28:06 -08:00
mingw.c Merge branch 'ef/win32-dirent' 2010-12-12 21:49:52 -08:00
mingw.h Merge branch 'rj/msvc-fix' 2010-12-16 12:55:36 -08:00
mkdtemp.c Fix gitmkdtemp: correct test for mktemp() return value 2010-02-25 12:08:22 -08:00
mmap.c
msvc.c win32: use our own dirent.h 2010-11-23 16:06:50 -08:00
msvc.h compat: provide a fallback va_copy definition 2011-02-26 01:06:50 -08:00
pread.c
qsort.c compat: Add simplified merge sort implementation from glibc 2008-02-06 22:35:28 -08:00
setenv.c
snprintf.c compat/snprintf: don't look at va_list twice 2011-12-12 09:09:35 -08:00
strcasestr.c
strlcpy.c
strtok_r.c compat: add strtok_r() 2010-08-14 19:35:38 -07:00
strtoumax.c
unsetenv.c
win32.h Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00
win32mmap.c Fix "Out of memory? mmap failed" for files larger than 4GB on Windows 2010-05-20 16:11:06 -07:00
winansi.c Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00