[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34325] trunk/blender/source/blender/ blenlib/intern/BLI_dynstr.c: apply fix from r34275 to BLI_dynstr_appendf(), dont chop off last character for >256 length strings.

Campbell Barton ideasman42 at gmail.com
Fri Jan 14 20:15:13 CET 2011


Revision: 34325
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34325
Author:   campbellbarton
Date:     2011-01-14 19:15:06 +0000 (Fri, 14 Jan 2011)
Log Message:
-----------
apply fix from r34275 to BLI_dynstr_appendf(), dont chop off last character for >256 length strings.

Revision Links:
--------------
    http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34275

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/BLI_dynstr.c

Modified: trunk/blender/source/blender/blenlib/intern/BLI_dynstr.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/BLI_dynstr.c	2011-01-14 17:41:33 UTC (rev 34324)
+++ trunk/blender/source/blender/blenlib/intern/BLI_dynstr.c	2011-01-14 19:15:06 UTC (rev 34325)
@@ -163,7 +163,9 @@
 {
 	va_list args;
 	char *message, fixedmessage[256];
-	int len= 256, maxlen= 65536, retval;
+	int len= sizeof(fixedmessage);
+	const int maxlen= 65536;
+	int retval;
 
 	/* note that it's tempting to just call BLI_dynstr_vappendf here
 	 * and avoid code duplication, that crashes on some system because
@@ -173,7 +175,7 @@
 		if(len == sizeof(fixedmessage))
 			message= fixedmessage;
 		else
-			message= MEM_callocN(sizeof(char)*(len+1), "BLI_dynstr_appendf");
+			message= MEM_callocN(sizeof(char)*(len), "BLI_dynstr_appendf");
 
 		va_start(args, format);
 		retval= vsnprintf(message, len, format, args);
@@ -192,13 +194,14 @@
 				break;
 			}
 		}
-		else if(retval > len) {
+		else if(retval >= len) {
 			/* in C99 the actual length required is returned */
 			if(message != fixedmessage)
 				MEM_freeN(message);
 			message= NULL;
 
-			len= retval;
+			/* retval doesnt include \0 terminator */
+			len= retval + 1;
 		}
 		else
 			break;




More information about the Bf-blender-cvs mailing list