BGE Python API
authorCampbell Barton <ideasman42@gmail.com>
Sun, 5 Apr 2009 14:55:50 +0000 (14:55 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 5 Apr 2009 14:55:50 +0000 (14:55 +0000)
- action attribute wasnt checking for NULL (own fault)
- KX_Scene getCamera wasnt checking for NULL
- CListValue had asserts for not yet implimented functionality, this would close blender. Better to print an error if the user manages to run this functions (I managed to by CListValue.count([1,2,3]))

source/gameengine/Converter/BL_ActionActuator.cpp
source/gameengine/Converter/BL_ShapeActionActuator.cpp
source/gameengine/Expressions/ListValue.cpp
source/gameengine/Ketsji/KX_SceneActuator.cpp

index 46ad344c5ddd2cd6a0a0a66af616124ca710f83a..9102c453a1624b45e52ef306b6f4a1f14373eedb 100644 (file)
@@ -1055,7 +1055,7 @@ int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
 PyObject* BL_ActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
 {
        BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
-       return PyString_FromString(self->GetAction()->id.name+2);
+       return PyString_FromString(self->GetAction() ? self->GetAction()->id.name+2 : "");
 }
 
 int BL_ActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
index a6dbf088ee3f8f421df5de10e8d34e1318a8967f..d52cc8cfccc971e64e6bdeee53d709819e321f7a 100644 (file)
@@ -886,7 +886,7 @@ PyObject* BL_ShapeActionActuator::PySetType(PyObject* self,
 PyObject* BL_ShapeActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
 {
        BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);
-       return PyString_FromString(self->GetAction()->id.name+2);
+       return PyString_FromString(self->GetAction() ? self->GetAction()->id.name+2 : "");
 }
 
 int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
index 15eb8835b798a06ead89748a2f13180007c3c953..d0aec645468827e347cd417c850b0739e9b72eb4 100644 (file)
@@ -430,6 +430,10 @@ bool CListValue::CheckEqual(CValue* first,CValue* second)
        bool result = false;
 
        CValue* eqval =  ((CValue*)first)->Calc(VALUE_EQL_OPERATOR,(CValue*)second);
+       
+       if (eqval==NULL)
+               return false;
+               
        STR_String txt = eqval->GetText();
        eqval->Release();
        if (txt=="TRUE")
@@ -479,7 +483,7 @@ PyObject* CListValue::Pycount(PyObject* self, PyObject* value)
        
        if (checkobj==NULL) { /* in this case just return that there are no items in the list */
                PyErr_Clear();
-               PyInt_FromLong(0);
+               return PyInt_FromLong(0);
        }
 
        int numelem = GetCount();
@@ -503,7 +507,8 @@ PyObject* CListValue::Pycount(PyObject* self, PyObject* value)
  * --------------------------------------------------------------------- */
 CValue* CListValue::Calc(VALUE_OPERATOR op,CValue *val) 
 {
-       assert(false); // todo: implement me!
+       //assert(false); // todo: implement me!
+       fprintf(stderr, "CValueList::Calc not yet implimented\n");
        return NULL;
 }
 
@@ -513,7 +518,8 @@ CValue* CListValue::CalcFinal(VALUE_DATA_TYPE dtype,
                                                          VALUE_OPERATOR op, 
                                                          CValue* val) 
 {
-       assert(false); // todo: implement me!
+       //assert(false); // todo: implement me!
+       fprintf(stderr, "CValueList::CalcFinal not yet implimented\n");
        return NULL;
 }
 
index f158eb29dd79e0479a63d897d54aac27c2b2d1bb..e1cd3d455039bbf0aef017f3c036380d168c9dbc 100644 (file)
@@ -469,7 +469,7 @@ PyObject* KX_SceneActuator::PyGetCamera(PyObject* self,
 {
        ShowDeprecationWarning("getCamera()", "the camera property");
        if (m_camera) {
-               PyString_FromString(m_camera->GetName());
+               return PyString_FromString(m_camera->GetName());
        }
        else {
                Py_RETURN_NONE;