[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34275] trunk/blender/source/blender/ blenlib/intern/BLI_dynstr.c: BLI_dynstr_vappendf() was cutting off the last character when allocating strings.

Campbell Barton ideasman42 at gmail.com
Wed Jan 12 07:01:08 CET 2011


Revision: 34275
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34275
Author:   campbellbarton
Date:     2011-01-12 06:01:07 +0000 (Wed, 12 Jan 2011)
Log Message:
-----------
BLI_dynstr_vappendf() was cutting off the last character when allocating strings.

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-12 05:49:33 UTC (rev 34274)
+++ trunk/blender/source/blender/blenlib/intern/BLI_dynstr.c	2011-01-12 06:01:07 UTC (rev 34275)
@@ -110,7 +110,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");
 
 		/* cant reuse the same args, so work on a copy */
 		va_copy(args_cpy, args);
@@ -130,13 +130,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