Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-11-03 18:09:18 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-11-03 18:09:18 +0400
commit665f602f152984f5a6f4ea05a2a90382acbf700a (patch)
treea7fa9484a60ac20878e2687995d2fd955958a7f6 /source/gameengine/Expressions
parentd210703bcaf89014495f761797ae50f362394697 (diff)
python string conversion
- use _PyUnicode_AsStringAndSize where possible - use %R for PyErr_Format(...) rather then running repr on the object explicitly - use const char
Diffstat (limited to 'source/gameengine/Expressions')
-rw-r--r--source/gameengine/Expressions/ListValue.cpp7
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.cpp10
-rw-r--r--source/gameengine/Expressions/StringValue.h5
3 files changed, 9 insertions, 13 deletions
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index ade54f6d924..cdd87235fd2 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -339,10 +339,9 @@ PyObject* listvalue_mapping_subscript(PyObject* self, PyObject* pyindex)
int index = PyLong_AsSsize_t(pyindex);
return listvalue_buffer_item(self, index); /* wont add a ref */
}
-
- PyObject *pyindex_str = PyObject_Repr(pyindex); /* new ref */
- PyErr_Format(PyExc_KeyError, "CList[key]: '%s' key not in list", _PyUnicode_AsString(pyindex_str));
- Py_DECREF(pyindex_str);
+
+ PyErr_Format(PyExc_KeyError,
+ "CList[key]: '%R' key not in list", pyindex);
return NULL;
}
diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp
index 33aa6b8d177..b05b7be0877 100644
--- a/source/gameengine/Expressions/PyObjectPlus.cpp
+++ b/source/gameengine/Expressions/PyObjectPlus.cpp
@@ -1012,8 +1012,8 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt
{
if (PyUnicode_Check(value))
{
- Py_ssize_t val_len;
- char *val = _PyUnicode_AsStringAndSize(value, &val_len);
+ Py_ssize_t val_size;
+ const char *val = _PyUnicode_AsStringAndSize(value, &val_size);
strncpy(ptr, val, attrdef->m_size);
ptr[attrdef->m_size-1] = 0;
}
@@ -1030,7 +1030,7 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt
if (PyUnicode_Check(value))
{
Py_ssize_t val_len;
- char *val = _PyUnicode_AsStringAndSize(value, &val_len);
+ const char *val = _PyUnicode_AsStringAndSize(value, &val_len); /* XXX, should be 'const' but we do a silly trick to have a shorter string */
if (attrdef->m_clamp)
{
if (val_len < attrdef->m_imin)
@@ -1042,10 +1042,8 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt
else if (val_len > attrdef->m_imax)
{
// trim the string
- char c = val[attrdef->m_imax];
- val[attrdef->m_imax] = 0;
*var = val;
- val[attrdef->m_imax] = c;
+ var->SetLength(attrdef->m_imax);
break;
}
} else if (val_len < attrdef->m_imin || val_len > attrdef->m_imax)
diff --git a/source/gameengine/Expressions/StringValue.h b/source/gameengine/Expressions/StringValue.h
index d0f74a6eed8..e5a892ff82d 100644
--- a/source/gameengine/Expressions/StringValue.h
+++ b/source/gameengine/Expressions/StringValue.h
@@ -31,8 +31,7 @@ public:
CStringValue();
CStringValue (const char *txt, const char *name , AllocationTYPE alloctype = CValue::HEAPVALUE);
- virtual ~CStringValue() {
- };
+ virtual ~CStringValue() {}
/// CValue implementation
virtual bool IsEqual(const STR_String & other);
virtual const STR_String & GetText();
@@ -40,7 +39,7 @@ public:
virtual CValue* Calc(VALUE_OPERATOR op, CValue *val);
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
- virtual void SetValue(CValue* newval) { m_strString = newval->GetText(); SetModified(true); };
+ virtual void SetValue(CValue* newval) { m_strString = newval->GetText(); SetModified(true); }
virtual CValue* GetReplica();
#ifdef WITH_PYTHON
virtual PyObject* ConvertValueToPython() {