浏览代码

py_compat: fix _PyObject_CallNoArg in Python 3.5

rdb 6 年之前
父节点
当前提交
ac85b05400
共有 1 个文件被更改,包括 3 次插入6 次删除
  1. 3 6
      dtool/src/interrogatedb/py_compat.h

+ 3 - 6
dtool/src/interrogatedb/py_compat.h

@@ -141,16 +141,13 @@ typedef long Py_hash_t;
 
 #if PY_VERSION_HEX < 0x03080000 && !defined(_PyObject_CallNoArg)
 INLINE PyObject *_PyObject_CallNoArg(PyObject *func) {
-  static PyTupleObject empty_tuple = {PyVarObject_HEAD_INIT(nullptr, 0)};
-#ifdef Py_TRACE_REFS
-  _Py_AddToAllObjects((PyObject *)&empty_tuple, 0);
-#endif
-  return PyObject_Call(func, (PyObject *)&empty_tuple, nullptr);
+  static PyObject *empty_tuple = PyTuple_New(0);
+  return PyObject_Call(func, empty_tuple, nullptr);
 }
 #  define _PyObject_CallNoArg _PyObject_CallNoArg
 #endif
 
-#ifndef _PyObject_FastCall
+#if PY_VERSION_HEX < 0x03080000 && !defined(_PyObject_FastCall)
 INLINE PyObject *_PyObject_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs) {
   PyObject *tuple = PyTuple_New(nargs);
   for (Py_ssize_t i = 0; i < nargs; ++i) {