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

Reply via email to