From b9f463cbd2ab9dfb4be5b17a649b88e7ddc2b334 Mon Sep 17 00:00:00 2001 From: Jonas Suhr Christensen Date: Thu, 13 Feb 2014 14:14:40 +0100 Subject: Added va_copy before using va_list's. This *should* fix 64bit wrong memory reference. --- hugin.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hugin.c b/hugin.c index 564d6be..a4dd622 100644 --- a/hugin.c +++ b/hugin.c @@ -44,6 +44,10 @@ # ifdef WIN32 # include typedef HANDLE mutex_t; + +// see http://stackoverflow.com/questions/558223/va-copy-porting-to-visual-c +#define va_copy(dest, src) (dest = src) + # else # include typedef pthread_mutex_t mutex_t; @@ -403,8 +407,14 @@ int __debug(const char *func, const int line, va_list va; va_start(va, fmt); + // Use a copy of va_list for 64bit fix: + // see http://www.bailopan.net/blog/?p=30 + // + // Not available in windows. So hugin may break in 64bit windows + va_list vacpy; va_copy(vacpy, va); + hdr_bufsz = scprintf(hdr_fmt, HDR_ARGS); msg_bufsz = vscprintf(fmt, vacpy); if(hdr_bufsz < 0 || msg_bufsz < 0) return 1; // Bad format? -- cgit v1.2.3