[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39745] trunk/blender/source/blender: RNA_property_as_string now escapes the string ( so operator redo can include strings with ", \n etc), also fixed a bug in string escape length limit.

Campbell Barton ideasman42 at gmail.com
Sun Aug 28 11:28:41 CEST 2011


Revision: 39745
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39745
Author:   campbellbarton
Date:     2011-08-28 09:28:41 +0000 (Sun, 28 Aug 2011)
Log Message:
-----------
RNA_property_as_string now escapes the string (so operator redo can include strings with ", \n etc), also fixed a bug in string escape length limit.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/string.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c

Modified: trunk/blender/source/blender/blenlib/intern/string.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/string.c	2011-08-28 05:06:30 UTC (rev 39744)
+++ trunk/blender/source/blender/blenlib/intern/string.c	2011-08-28 09:28:41 UTC (rev 39745)
@@ -129,7 +129,6 @@
 	while(len < maxlen) {
 		switch(*src) {
 			case '\0':
-				*dst= '\0';
 				break;
 			case '\\':
 			case '"':
@@ -144,7 +143,6 @@
 				}
 				else {
 					/* not enough space to escape */
-					*dst= '\0';
 					break;
 				}
 				/* intentionally pass through */
@@ -156,6 +154,8 @@
 		len++;
 	}
 
+	*dst= '\0';
+
 	return len;
 }
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2011-08-28 05:06:30 UTC (rev 39744)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2011-08-28 09:28:41 UTC (rev 39745)
@@ -2106,7 +2106,7 @@
 	if(length+1 < fixedlen)
 		buf= fixedbuf;
 	else
-		buf= MEM_callocN(sizeof(char)*(length+1), "RNA_string_get_alloc");
+		buf= MEM_mallocN(sizeof(char)*(length+1), "RNA_string_get_alloc");
 
 	RNA_property_string_get(ptr, prop, buf);
 
@@ -4271,11 +4271,18 @@
 		break;
 	case PROP_STRING:
 	{
-		/* string arrays dont exist */
+		char *buf_esc;
 		char *buf;
-		buf = RNA_property_string_get_alloc(ptr, prop, NULL, -1);
-		BLI_dynstr_appendf(dynstr, "\"%s\"", buf);
+		int length;
+
+		length= RNA_property_string_length(ptr, prop);
+		buf= MEM_mallocN(sizeof(char)*(length+1), "RNA_property_as_string");
+		buf_esc= MEM_mallocN(sizeof(char)*(length*2+1), "RNA_property_as_string esc");
+		RNA_property_string_get(ptr, prop, buf);
+		BLI_strescape(buf_esc, buf, length*2);
 		MEM_freeN(buf);
+		BLI_dynstr_appendf(dynstr, "\"%s\"", buf_esc);
+		MEM_freeN(buf_esc);
 		break;
 	}
 	case PROP_ENUM:




More information about the Bf-blender-cvs mailing list