[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