patch 8.1.2201: cannot build with dynamically linked Python 3.8
Problem: Cannot build with dynamically linked Python 3.8.
Solution: Implement py3__Py_DECREF() and py3__Py_XDECREF(). (Ken Takata,
closes #4080)
diff --git a/src/if_python3.c b/src/if_python3.c
index b0b1152..26b973b 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -600,6 +600,42 @@
{"", NULL},
};
+# if PY_VERSION_HEX >= 0x030800f0
+ static inline void
+py3__Py_DECREF(const char *filename UNUSED, int lineno UNUSED, PyObject *op)
+{
+ _Py_DEC_REFTOTAL;
+ if (--op->ob_refcnt != 0)
+ {
+# ifdef Py_REF_DEBUG
+ if (op->ob_refcnt < 0)
+ {
+ _Py_NegativeRefcount(filename, lineno, op);
+ }
+# endif
+ }
+ else
+ {
+ _Py_Dealloc(op);
+ }
+}
+
+# undef Py_DECREF
+# define Py_DECREF(op) py3__Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
+
+ static inline void
+py3__Py_XDECREF(PyObject *op)
+{
+ if (op != NULL)
+ {
+ Py_DECREF(op);
+ }
+}
+
+# undef Py_XDECREF
+# define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op))
+# endif
+
/*
* Free python.dll
*/