changeset 14575:b15cd3ec5f62 draft

(svn r19148) -Fix [FS#3627]: [v]seprintf should return the number of added characters excluding '\0' on truncation (adf88)
author rubidium <rubidium@openttd.org>
date Wed, 17 Feb 2010 13:55:08 +0000
parents 8f1008826958
children 11224cffa30e
files src/string.cpp
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -32,9 +32,9 @@
  */
 static int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap)
 {
-	if (str >= last) return 0;
-	size_t size = last - str + 1;
-	return min((int)size, vsnprintf(str, size, format, ap));
+	ptrdiff_t diff = last - str;
+	if (diff < 0) return 0;
+	return min((int)diff, vsnprintf(str, diff + 1, format, ap));
 }
 
 void ttd_strlcat(char *dst, const char *src, size_t size)