va_start (args, fmt);
retval = vsnprintf (str, n, fmt, args);
va_end (args);
-
+
+ if (retval < 0)
+ {
+ str[n-1] = '\0';
+ retval = strlen (str);
+ }
+
return retval;
#else /* !HAVE_VSNPRINTF */
gchar *printed;
retval = vsnprintf (str, n, fmt, args);
+ if (retval < 0)
+ {
+ str[n-1] = '\0';
+ retval = strlen (str);
+ }
+
return retval;
#else /* !HAVE_VSNPRINTF */
gchar *printed;