- 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 (PyUnicode_Check(source)) {
+ str = PyUnicode_AsEncodedString(source, wxPyDefaultEncoding, "strict");
+ if (PyErr_Occurred()) return NULL;
+ }
+ else if (!PyString_Check(source)) {
+ str = PyObject_Str(source);
+ if (PyErr_Occurred()) return NULL;