summaryrefslogtreecommitdiff
path: root/python/generic.h
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-06-25 18:11:13 +0200
committerJulian Andres Klode <jak@debian.org>2009-06-25 18:11:13 +0200
commit128c1f00b2006c9c24638c11000e1864fc15bd04 (patch)
tree3d98eb7877f4d2bfcf149c7803309da1f0b3cb52 /python/generic.h
parentca4408170dd5d2a6bba176409e0f0af1156357a6 (diff)
downloadpython-apt-128c1f00b2006c9c24638c11000e1864fc15bd04.tar.gz
python/generic.h: Make PyObject_AsString() only accept unicode on Python 3.
Diffstat (limited to 'python/generic.h')
-rw-r--r--python/generic.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/python/generic.h b/python/generic.h
index 2a87b39c..182b1b53 100644
--- a/python/generic.h
+++ b/python/generic.h
@@ -83,15 +83,25 @@ static inline const char *PyUnicode_AsString(PyObject *op) {
}
// Convert any type of string based object to a const char.
+#if PY_MAJOR_VERSION < 3
static inline const char *PyObject_AsString(PyObject *object) {
if (PyBytes_Check(object))
return PyBytes_AsString(object);
else if (PyUnicode_Check(object))
return PyUnicode_AsString(object);
else
- PyErr_SetObject(PyExc_TypeError, object);
+ PyErr_SetString(PyExc_TypeError, "Argument must be str.");
return 0;
}
+#else
+static inline const char *PyObject_AsString(PyObject *object) {
+ if (PyUnicode_Check(object) == 0) {
+ PyErr_SetString(PyExc_TypeError, "Argument must be str.");
+ return 0;
+ }
+ return PyUnicode_AsString(object);
+}
+#endif
template <class T> struct CppPyObject : public PyObject
{