diff --git a/src/xpdev/genwrap.c b/src/xpdev/genwrap.c
index 8754217b9dcaa10356397544d913db24d7b5c8a8..de51c0afac76c6f56229300fe8375e49cd249af5 100644
--- a/src/xpdev/genwrap.c
+++ b/src/xpdev/genwrap.c
@@ -75,9 +75,13 @@ int DLLCALL safe_snprintf(char *dst, size_t size, const char *fmt, ...)
 	va_start(argptr,fmt);
 	numchars= vsnprintf(dst,size,fmt,argptr);
 	va_end(argptr);
+	dst[size-1]=0;
+#ifdef _MSC_VER
+	if(numchars==-1)
+		nuchars=strlen(dst);
+#endif
 	if(numchars>=size && numchars>0)
 		numchars=size-1;
-	dst[size-1]=0;
 	return(numchars);
 }