From 128c1f00b2006c9c24638c11000e1864fc15bd04 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Thu, 25 Jun 2009 18:11:13 +0200 Subject: python/generic.h: Make PyObject_AsString() only accept unicode on Python 3. --- python/generic.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'python/generic.h') 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 struct CppPyObject : public PyObject { -- cgit v1.2.3