diff options
author | Jonas Suhr Christensen <jsc@umbraculum.org> | 2014-02-13 14:14:40 +0100 |
---|---|---|
committer | Jonas Suhr Christensen <jsc@umbraculum.org> | 2014-02-13 14:14:40 +0100 |
commit | b9f463cbd2ab9dfb4be5b17a649b88e7ddc2b334 (patch) | |
tree | f0636a7ec4e09eeaa5726433c0a6ccdc8df648e7 | |
parent | e3a27e83e1c2f84f5a5997dfe06cfa9e8fa5f032 (diff) |
Added va_copy before using va_list's. This *should* fix 64bit wrong memory reference.
-rw-r--r-- | hugin.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -44,6 +44,10 @@ # ifdef WIN32 # include <windows.h> 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 <pthread.h> 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? |