[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58310] trunk/blender/source/blender/ makesrna/intern/makesrna.c: fix [#36155] Crash with __contains__
Campbell Barton
ideasman42 at gmail.com
Tue Jul 16 07:29:19 CEST 2013
Revision: 58310
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58310
Author: campbellbarton
Date: 2013-07-16 05:29:19 +0000 (Tue, 16 Jul 2013)
Log Message:
-----------
fix [#36155] Crash with __contains__
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/intern/makesrna.c
Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c 2013-07-16 05:10:58 UTC (rev 58309)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c 2013-07-16 05:29:19 UTC (rev 58310)
@@ -1256,7 +1256,7 @@
fprintf(f, " extern int %s_%s_length(PointerRNA *);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
fprintf(f, " extern void %s_%s_get(PointerRNA *, char *);\n\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
- fprintf(f, " int found= 0;\n");
+ fprintf(f, " bool found = false;\n");
fprintf(f, " CollectionPropertyIterator iter;\n");
fprintf(f, " char namebuf[%d];\n", namebuflen);
fprintf(f, " char *name;\n\n");
@@ -1264,26 +1264,29 @@
fprintf(f, " %s_%s_begin(&iter, ptr);\n\n", srna->identifier, rna_safe_id(prop->identifier));
fprintf(f, " while (iter.valid) {\n");
- fprintf(f, " int namelen = %s_%s_length(&iter.ptr);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
- fprintf(f, " if (namelen < %d) {\n", namebuflen);
- fprintf(f, " %s_%s_get(&iter.ptr, namebuf);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
- fprintf(f, " if (strcmp(namebuf, key) == 0) {\n");
- fprintf(f, " found = 1;\n");
- fprintf(f, " *r_ptr = iter.ptr;\n");
- fprintf(f, " break;\n");
+ fprintf(f, " if (iter.ptr.data) {\n");
+ fprintf(f, " int namelen = %s_%s_length(&iter.ptr);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
+ fprintf(f, " if (namelen < %d) {\n", namebuflen);
+ fprintf(f, " %s_%s_get(&iter.ptr, namebuf);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
+ fprintf(f, " if (strcmp(namebuf, key) == 0) {\n");
+ fprintf(f, " found = true;\n");
+ fprintf(f, " *r_ptr = iter.ptr;\n");
+ fprintf(f, " break;\n");
+ fprintf(f, " }\n");
fprintf(f, " }\n");
- fprintf(f, " }\n");
- fprintf(f, " else {\n");
- fprintf(f, " name = MEM_mallocN(namelen+1, \"name string\");\n");
- fprintf(f, " %s_%s_get(&iter.ptr, name);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
- fprintf(f, " if (strcmp(name, key) == 0) {\n");
- fprintf(f, " MEM_freeN(name);\n\n");
- fprintf(f, " found = 1;\n");
- fprintf(f, " *r_ptr = iter.ptr;\n");
- fprintf(f, " break;\n");
+ fprintf(f, " else {\n");
+ fprintf(f, " name = MEM_mallocN(namelen+1, \"name string\");\n");
+ fprintf(f, " %s_%s_get(&iter.ptr, name);\n", item_name_base->identifier, rna_safe_id(item_name_prop->identifier));
+ fprintf(f, " if (strcmp(name, key) == 0) {\n");
+ fprintf(f, " MEM_freeN(name);\n\n");
+ fprintf(f, " found = true;\n");
+ fprintf(f, " *r_ptr = iter.ptr;\n");
+ fprintf(f, " break;\n");
+ fprintf(f, " }\n");
+ fprintf(f, " else {\n");
+ fprintf(f, " MEM_freeN(name);\n");
+ fprintf(f, " }\n");
fprintf(f, " }\n");
- fprintf(f, " else\n");
- fprintf(f, " MEM_freeN(name);\n");
fprintf(f, " }\n");
fprintf(f, " %s_%s_next(&iter);\n", srna->identifier, rna_safe_id(prop->identifier));
fprintf(f, " }\n");
More information about the Bf-blender-cvs
mailing list