diff --git a/src/helper/log.c b/src/helper/log.c
index b38987232eb290b06533bf03d367c0eb07a7e6ed..5127a3731ab28fd06f0bb6193a1ad286c98ad5e7 100644
--- a/src/helper/log.c
+++ b/src/helper/log.c
@@ -284,9 +284,12 @@ char *alloc_printf(const char *fmt, va_list ap)
 					free(t);
 				return NULL;
 			}
-	
+
+	        va_list ap_copy;	        
+	        va_copy(ap_copy, ap);
+
 		int ret;
-		ret = vsnprintf(string, size, fmt, ap);
+		ret = vsnprintf(string, size, fmt, ap_copy);
 		/* NB! The result of the vsnprintf() might be an *EMPTY* string! */
 		if ((ret >= 0) && ((ret + 1) < size))
 			break;