From 94bd43ce19eeaad87c0d4af0bfa5b717c61b9ab7 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 22 Dec 2008 16:38:57 +0000 Subject: [PATCH] Windows: Handle missing va_copy macro in MSVC --- src/native/common/common_tools.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/native/common/common_tools.c b/src/native/common/common_tools.c index f1456998..d381ca56 100644 --- a/src/native/common/common_tools.c +++ b/src/native/common/common_tools.c @@ -71,7 +71,11 @@ static int do_vsnprintf(char* buffer, size_t buffer_size, const char *format, va #ifdef _MSC_VER return vsnprintf_s(buffer, buffer_size, _TRUNCATE, format, ap); #else - return vsnprintf(buffer, buffer_size, format, ap); + va_list cp_ap; + va_copy(cp_ap, ap); + int res = vsnprintf(buffer, buffer_size, format, cp_ap); + va_end(cp_ap); + return res; #endif } @@ -80,11 +84,9 @@ static jstring sprintfJavaString(JNIEnv *env, const char *format, va_list ap) { char *buffer; jstring str; int str_size; - va_list cp_ap; buffer = (char *)malloc(sizeof(char)*buffer_size); if (buffer == NULL) return NULL; - va_copy(cp_ap, ap); str_size = do_vsnprintf(buffer, buffer_size, format, ap); if (str_size > buffer_size) { free(buffer); @@ -92,9 +94,8 @@ static jstring sprintfJavaString(JNIEnv *env, const char *format, va_list ap) { buffer = (char *)malloc(sizeof(char)*buffer_size); if (buffer == NULL) return NULL; - int blah = do_vsnprintf(buffer, buffer_size, format, cp_ap); + do_vsnprintf(buffer, buffer_size, format, ap); } - va_end(cp_ap); str = (*env)->NewStringUTF(env, buffer); free(buffer); return str;