From 1b0e78c588b94b1a1dc1ab533576804585dd7a86 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 17 Feb 2010 13:55:08 +0000 Subject: [PATCH] (svn r19148) -Fix [FS#3627]: [v]seprintf should return the number of added characters excluding '\0' on truncation (adf88) --- src/string.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/string.cpp b/src/string.cpp index 2bd7475359..b6e40b7b3a 100644 --- 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)