Workarounds for 2 rna bugs.
authorCampbell Barton <ideasman42@gmail.com>
Sat, 29 Aug 2009 23:05:46 +0000 (23:05 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 29 Aug 2009 23:05:46 +0000 (23:05 +0000)
- mesh face properties that have no data are tested for length.
- the rawtype of MFace.verts is not set, defaulting to CHAR, meaning only verts with 256 verts could be added from python. temp workaround by making PROP_RAW_INT the first in the enum. For some reason makesrna.c doesn't set the raw type MFace.verts at all.

source/blender/makesrna/RNA_types.h
source/blender/makesrna/intern/rna_mesh.c

index 1acbfb2..b57cbc3 100644 (file)
@@ -176,11 +176,11 @@ typedef struct CollectionPointerLink {
 } CollectionPointerLink;
 
 typedef enum RawPropertyType {
-       PROP_RAW_CHAR,
+       PROP_RAW_INT, // XXX - abused for types that are not set, eg. MFace.verts, needs fixing.
        PROP_RAW_SHORT,
-       PROP_RAW_INT,
-       PROP_RAW_FLOAT,
-       PROP_RAW_DOUBLE
+       PROP_RAW_CHAR,
+       PROP_RAW_DOUBLE,
+       PROP_RAW_FLOAT
 } RawPropertyType;
 
 typedef struct RawArray {
index 4d53986..edecfc8 100644 (file)
@@ -708,7 +708,10 @@ static void rna_TextureFace_image_set(PointerRNA *ptr, PointerRNA value)
 static int rna_MeshFace_verts_get_length(PointerRNA *ptr)
 {
        MFace *face= (MFace*)ptr->data;
-       return face->v4 ? 4 : 3;
+       if(face)
+               return face->v4 ? 4 : 3;
+       else
+               return 4; // XXX rna_raw_access wants the length of a dummy face. this needs fixing. - Campbell
 }
 
 static int rna_MeshFace_verts_set_length(PointerRNA *ptr, int length)