diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-04 04:01:41 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-04 04:01:41 +0400 |
commit | 5881fe5d679b38eb40b59c1af3bc3db88a53f35d (patch) | |
tree | 38e130faf7aee14f0017545af15c637a45a86778 | |
parent | dd037a85a02b9344045c6f4cb8ff792827b69eff (diff) |
avoid runtime overflow (1 << 31), for RNA and armature layer UI.
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/makesrna.c | 7 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_MeshProxy.cpp | 11 |
3 files changed, 11 insertions, 13 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 2e80af1b3ad..079ba97aa9d 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -355,7 +355,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in PropertyType type; PropertySubType subtype; uiLayout *sub; - int a, b; + unsigned int a, b; /* retrieve type and subtype */ type = RNA_property_type(prop); @@ -373,8 +373,8 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in /* special check for layer layout */ int butw, buth, unit; int cols = (len >= 20) ? 2 : 1; - int colbuts = len / (2 * cols); - int layer_used = 0; + const unsigned int colbuts = len / (2 * cols); + unsigned int layer_used = 0; uiBlockSetCurLayout(block, uiLayoutAbsolute(layout, FALSE)); diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index f382caaccba..5237c97ef71 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -646,13 +646,14 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr if (prop->flag & PROP_DYNAMIC) { char *lenfunc = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "get_length"); - fprintf(f, " int i, arraylen[RNA_MAX_ARRAY_DIMENSION];\n"); - fprintf(f, " int len = %s(ptr, arraylen);\n\n", lenfunc); + fprintf(f, " unsigned int arraylen[RNA_MAX_ARRAY_DIMENSION];\n"); + fprintf(f, " unsigned int i;\n"); + fprintf(f, " unsigned int len = %s(ptr, arraylen);\n\n", lenfunc); fprintf(f, " for (i = 0; i < len; i++) {\n"); MEM_freeN(lenfunc); } else { - fprintf(f, " int i;\n\n"); + fprintf(f, " unsigned int i;\n\n"); fprintf(f, " for (i = 0; i < %u; i++) {\n", prop->totarraylength); } diff --git a/source/gameengine/Ketsji/KX_MeshProxy.cpp b/source/gameengine/Ketsji/KX_MeshProxy.cpp index 8e803c46358..f7cd13acf27 100644 --- a/source/gameengine/Ketsji/KX_MeshProxy.cpp +++ b/source/gameengine/Ketsji/KX_MeshProxy.cpp @@ -387,16 +387,13 @@ PyObject *KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_ for (i=0; i<tot; mit++, i++) { - RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial(); - - /* Why do we need to check for RAS_BLENDERMAT if both are cast to a (PyObject *)? - Campbell */ - if (polymat->GetFlag() & RAS_BLENDERMAT) - { - KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial*>(polymat); + RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial(); + if (polymat->GetFlag() & RAS_BLENDERMAT) { + KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial *>(polymat); PyList_SET_ITEM(materials, i, mat->GetProxy()); } else { - KX_PolygonMaterial *mat = static_cast<KX_PolygonMaterial*>(polymat); + KX_PolygonMaterial *mat = static_cast<KX_PolygonMaterial *>(polymat); PyList_SET_ITEM(materials, i, mat->GetProxy()); } } |