From 98a170cdadd8e871741b97abefffd4debb0a44b0 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sat, 15 Mar 2014 16:12:27 +0100 Subject: use slightly better _isString() subtype check in Py2 --- src/lxml/includes/etree_defs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lxml/includes/etree_defs.h b/src/lxml/includes/etree_defs.h index 33cd948d..2d78b6b5 100644 --- a/src/lxml/includes/etree_defs.h +++ b/src/lxml/includes/etree_defs.h @@ -213,8 +213,10 @@ long _ftol2( double dblSource ) { return _ftol( dblSource ); } #if PY_MAJOR_VERSION < 3 #define _isString(obj) (PyString_CheckExact(obj) || \ PyUnicode_CheckExact(obj) || \ - PyObject_TypeCheck(obj, &PyBaseString_Type)) + PyType_IsSubtype(Py_TYPE(obj), &PyBaseString_Type)) #else +/* builtin subtype type checks are almost as fast as exact checks in Py2.7+ + * and Unicode is more common in Py3 */ #define _isString(obj) (PyUnicode_Check(obj) || PyBytes_Check(obj)) #endif -- cgit v1.2.1