diff --git a/dtool/src/interrogatedb/py_panda.I b/dtool/src/interrogatedb/py_panda.I index 3b171f14c7..0a06358beb 100644 --- a/dtool/src/interrogatedb/py_panda.I +++ b/dtool/src/interrogatedb/py_panda.I @@ -107,7 +107,15 @@ ALWAYS_INLINE PyObject *Dtool_WrapValue(long long value) { } ALWAYS_INLINE PyObject *Dtool_WrapValue(unsigned long long value) { + // size_t is sometimes defined as unsigned long long, and we want to map + // that to int in Python 2 so it can be returned from a __len__. +#if PY_MAJOR_VERSION >= 3 return PyLong_FromUnsignedLongLong(value); +#else + return (value > LONG_MAX) + ? PyLong_FromUnsignedLongLong(value) + : PyInt_FromLong((long)value); +#endif } ALWAYS_INLINE PyObject *Dtool_WrapValue(bool value) {