raised when appropriate instead ofg just catching everything and
raising TypeError
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29886
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
if (PyString_Check(source))
Py_DECREF(uni);
#else
if (PyString_Check(source))
Py_DECREF(uni);
#else
- char* tmpPtr; int tmpSize;
- if (PyString_AsStringAndSize(source, &tmpPtr, &tmpSize) == -1) {
- PyErr_SetString(PyExc_TypeError, "Unable to convert string");
- return NULL;
+ // Convert to a string object if it isn't already, then to wxString
+ PyObject* str = source;
+ if (!PyString_Check(source)) {
+ str = PyObject_Str(source);
+ if (PyErr_Occurred()) return NULL;
+ char* tmpPtr; int tmpSize;
+ PyString_AsStringAndSize(str, &tmpPtr, &tmpSize);
target = new wxString(tmpPtr, tmpSize);
target = new wxString(tmpPtr, tmpSize);
+
+ if (!PyString_Check(source))
+ Py_DECREF(str);
#endif // wxUSE_UNICODE
return target;
#endif // wxUSE_UNICODE
return target;