Fix for incorrect use of DNA_struct_find_nr
authorCampbell Barton <ideasman42@gmail.com>
Mon, 20 Jan 2014 03:11:16 +0000 (14:11 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 20 Jan 2014 03:13:59 +0000 (14:13 +1100)
Patch T38290 by ldo (Lawrence D'Oliveiro)

source/blender/makesdna/intern/dna_genfile.c
source/blender/makesrna/intern/rna_define.c

index eca06242da0fbc38d25272d405262f9d68a10682..525c703002923dac721b50f40d80b3d26344518b 100644 (file)
@@ -1278,7 +1278,7 @@ void *DNA_struct_reconstruct(SDNA *newsdna, SDNA *oldsdna, char *compflags, int
        curSDNAnr = DNA_struct_find_nr(newsdna, type);
 
        /* init data and alloc */
-       if (curSDNAnr >= 0) {
+       if (curSDNAnr != -1) {
                spc = newsdna->structs[curSDNAnr];
                curlen = newsdna->typelens[spc[0]];
        }
@@ -1308,6 +1308,7 @@ int DNA_elem_offset(SDNA *sdna, const char *stype, const char *vartype, const ch
        const int SDNAnr = DNA_struct_find_nr(sdna, stype);
        const short * const spo = sdna->structs[SDNAnr];
        char * const cp = find_elem(sdna, vartype, name, spo, NULL, NULL);
+       BLI_assert(SDNAnr != -1);
        return (int)((intptr_t)cp);
 }
 
@@ -1316,7 +1317,7 @@ bool DNA_struct_elem_find(SDNA *sdna, const char *stype, const char *vartype, co
        
        const int SDNAnr = DNA_struct_find_nr(sdna, stype);
        
-       if (SDNAnr >= 0) {
+       if (SDNAnr != -1) {
                const short * const spo = sdna->structs[SDNAnr];
                char * const cp = find_elem(sdna, vartype, name, spo, NULL, NULL);
                
index 044162f7b6e1f1d3040dd887464325e0ce053923..319e49c5462a921952e112557b613610020c3938 100644 (file)
@@ -838,13 +838,17 @@ void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
 
        ds = rna_find_def_struct(srna);
 
-       if (!DNA_struct_find_nr(DefRNA.sdna, structname)) {
+       /* there are far too many structs which initialize without valid DNA struct names,
+        * this can't be checked without adding an option to disable (tested this and it means changes all over - Campbell) */
+#if 0
+       if (DNA_struct_find_nr(DefRNA.sdna, structname) == -1) {
                if (!DefRNA.silent) {
                        fprintf(stderr, "%s: %s not found.\n", __func__, structname);
                        DefRNA.error = 1;
                }
                return;
        }
+#endif
 
        ds->dnaname = structname;
 }
@@ -865,7 +869,7 @@ void RNA_def_struct_sdna_from(StructRNA *srna, const char *structname, const cha
                return;
        }
 
-       if (!DNA_struct_find_nr(DefRNA.sdna, structname)) {
+       if (DNA_struct_find_nr(DefRNA.sdna, structname) == -1) {
                if (!DefRNA.silent) {
                        fprintf(stderr, "%s: %s not found.\n", __func__, structname);
                        DefRNA.error = 1;