diff --git a/src/xpdev/genwrap.c b/src/xpdev/genwrap.c
index 2513f11dcf8bddb3dc7b966b4853fc037ad14cbf..d1c627062803fef4428721b51436b0cc0068050a 100644
--- a/src/xpdev/genwrap.c
+++ b/src/xpdev/genwrap.c
@@ -61,8 +61,12 @@ int safe_snprintf(char *dst, size_t size, const char *fmt, ...)
 	if(numchars==-1)
 		numchars=strlen(dst);
 #endif
-	if ((size_t)numchars >= size && numchars > 0)
-		numchars = size - 1;
+	if ((size_t)numchars >= size && numchars > 0) {
+		if (size == 0)
+			numchars = 0;
+		else
+			numchars = size - 1;
+	}
 	return(numchars);
 }