diff --git a/panda/src/gobj/internalName.h b/panda/src/gobj/internalName.h index 729ec15ab8..5e61e81916 100644 --- a/panda/src/gobj/internalName.h +++ b/panda/src/gobj/internalName.h @@ -96,11 +96,7 @@ PUBLISHED: #ifdef HAVE_PYTHON // These versions are exposed to Python, which have additional logic to map // from Python interned strings. -#if PY_MAJOR_VERSION >= 3 - EXTENSION(static PT(InternalName) make(PyUnicodeObject *str)); -#else - EXTENSION(static PT(InternalName) make(PyStringObject *str)); -#endif + EXTENSION(static PT(InternalName) make(PyObject *str)); #endif public: diff --git a/panda/src/gobj/internalName_ext.cxx b/panda/src/gobj/internalName_ext.cxx index f1cdf0a725..4821880677 100644 --- a/panda/src/gobj/internalName_ext.cxx +++ b/panda/src/gobj/internalName_ext.cxx @@ -24,7 +24,12 @@ using std::string; */ #if PY_MAJOR_VERSION >= 3 PT(InternalName) Extension:: -make(PyUnicodeObject *str) { +make(PyObject *str) { + if (!PyUnicode_Check(str)) { + Dtool_Raise_ArgTypeError(str, 0, "InternalName.make", "str"); + return nullptr; + } + if (!PyUnicode_CHECK_INTERNED(str)) { // Not an interned string; don't bother. Py_ssize_t len = 0; @@ -50,7 +55,12 @@ make(PyUnicodeObject *str) { #else PT(InternalName) Extension:: -make(PyStringObject *str) { +make(PyObject *str) { + if (!PyString_Check(str)) { + Dtool_Raise_ArgTypeError(str, 0, "InternalName.make", "str"); + return nullptr; + } + if (!PyString_CHECK_INTERNED(str)) { // Not an interned string; don't bother. string name(PyString_AS_STRING(str), PyString_GET_SIZE(str)); diff --git a/panda/src/gobj/internalName_ext.h b/panda/src/gobj/internalName_ext.h index 20016abd60..8637eae16e 100644 --- a/panda/src/gobj/internalName_ext.h +++ b/panda/src/gobj/internalName_ext.h @@ -29,11 +29,7 @@ template<> class Extension : public ExtensionBase { public: -#if PY_MAJOR_VERSION >= 3 - static PT(InternalName) make(PyUnicodeObject *str); -#else - static PT(InternalName) make(PyStringObject *str); -#endif + static PT(InternalName) make(PyObject *str); }; #endif // HAVE_PYTHON