Revision: 37613
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37613
Author: campbellbarton
Date: 2011-06-18 03:14:24 +0000 (Sat, 18 Jun 2011)
Log Message:
-----------
throw an error if preprocessor definitions are used for DNA array lengths
(previously would fail silently & not work right).
Modified Paths:
--------------
trunk/blender/source/blender/makesdna/intern/makesdna.c
Modified: trunk/blender/source/blender/makesdna/intern/makesdna.c
===================================================================
--- trunk/blender/source/blender/makesdna/intern/makesdna.c 2011-06-18
00:47:59 UTC (rev 37612)
+++ trunk/blender/source/blender/makesdna/intern/makesdna.c 2011-06-18
03:14:24 UTC (rev 37613)
@@ -670,6 +670,8 @@
}
else if( str[a]==']' && cp) {
str[a]= 0;
+ /* if 'cp' is a preprocessor definition, it will
evaluate to 0,
+ * the caller needs to check for this case and throw an
error */
mul*= atoi(cp);
}
}
@@ -713,7 +715,12 @@
/* has the name an extra
length? (array) */
mul= 1;
if( cp[namelen-1]==']') mul=
arraysize(cp, namelen);
-
+
+ if (mul == 0) {
+ printf("Zero array size
found or could not parse %s: '%.*s'\n", types[structtype], namelen + 1, cp);
+ dna_error = 1;
+ }
+
/* 4-8 aligned/ */
if(sizeof(void *) == 4) {
if (len % 4) {
@@ -743,7 +750,12 @@
/* has the name an extra
length? (array) */
mul= 1;
if( cp[namelen-1]==']') mul=
arraysize(cp, namelen);
-
+
+ if (mul == 0) {
+ printf("Zero array size
found or could not parse %s: '%.*s'\n", types[structtype], namelen + 1, cp);
+ dna_error = 1;
+ }
+
/* struct alignment */
if(type >= firststruct) {
if(sizeof(void *)==8 &&
(len % 8) ) {
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs