Last active
August 10, 2024 02:13
-
-
Save k-takata/79ae97339898ee12cc012ace1ec7922e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- a/src/if_py_both.h | |
+++ b/src/if_py_both.h | |
@@ -3083,7 +3083,7 @@ ListConcatInPlace(ListObject *self, PyOb | |
} | |
Py_DECREF(lookup_dict); | |
- Py_INCREF(self); | |
+ Py_INCREF((PyObject*)self); | |
return (PyObject *)(self); | |
} | |
@@ -4012,7 +4012,7 @@ TabPageNew(tabpage_T *tab) | |
if (TAB_PYTHON_REF(tab)) | |
{ | |
self = TAB_PYTHON_REF(tab); | |
- Py_INCREF(self); | |
+ Py_INCREF((PyObject*)self); | |
} | |
else | |
{ | |
@@ -4206,7 +4206,7 @@ WindowNew(win_T *win, tabpage_T *tab) | |
if (WIN_PYTHON_REF(win)) | |
{ | |
self = WIN_PYTHON_REF(win); | |
- Py_INCREF(self); | |
+ Py_INCREF((PyObject*)self); | |
} | |
else | |
{ | |
@@ -4334,7 +4334,7 @@ WindowAttr(WindowObject *self, char *nam | |
} | |
else if (strcmp(name, "tabpage") == 0) | |
{ | |
- Py_INCREF(self->tabObject); | |
+ Py_INCREF((PyObject*)self->tabObject); | |
return (PyObject *)(self->tabObject); | |
} | |
else if (strcmp(name, "__members__") == 0) | |
@@ -4488,7 +4488,7 @@ WinListNew(TabPageObject *tabObject) | |
self = PyObject_NEW(WinListObject, WinListTypePtr); | |
self->tabObject = tabObject; | |
- Py_INCREF(tabObject); | |
+ Py_INCREF((PyObject*)tabObject); | |
return (PyObject *)(self); | |
} | |
@@ -5383,7 +5383,7 @@ RangeNew(buf_T *buf, PyInt start, PyInt | |
Py_DECREF(self); | |
return NULL; | |
} | |
- Py_INCREF(bufr); | |
+ Py_INCREF((PyObject*)bufr); | |
self->buf = bufr; | |
self->start = start; | |
@@ -5512,7 +5512,7 @@ BufferNew(buf_T *buf) | |
if (BUF_PYTHON_REF(buf) != NULL) | |
{ | |
self = BUF_PYTHON_REF(buf); | |
- Py_INCREF(self); | |
+ Py_INCREF((PyObject*)self); | |
} | |
else | |
{ | |
diff --git a/src/if_python3.c b/src/if_python3.c | |
--- a/src/if_python3.c | |
+++ b/src/if_python3.c | |
@@ -224,6 +224,17 @@ static HINSTANCE hinstPy3 = 0; // Instan | |
# define PyObject_GetItem py3_PyObject_GetItem | |
# define PyObject_IsTrue py3_PyObject_IsTrue | |
# define PyModule_GetDict py3_PyModule_GetDict | |
+# if defined(USE_LIMITED_API) \ | |
+ && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) | |
+# undef Py_INCREF | |
+# if Py_LIMITED_API+0 >= 0x030a00A7 | |
+# define _Py_IncRef py3__Py_IncRef | |
+# define Py_INCREF _Py_IncRef | |
+# else | |
+# define Py_IncRef py3_Py_IncRef | |
+# define Py_INCREF Py_IncRef | |
+# endif | |
+# endif | |
# ifdef USE_LIMITED_API | |
# define Py_CompileString py3_Py_CompileString | |
# define PyEval_EvalCode py3_PyEval_EvalCode | |
@@ -396,6 +407,15 @@ static void (*py3_Py_Finalize)(void); | |
static void (*py3_PyErr_SetString)(PyObject *, const char *); | |
static void (*py3_PyErr_SetObject)(PyObject *, PyObject *); | |
static int (*py3_PyErr_ExceptionMatches)(PyObject *); | |
+# if defined(USE_LIMITED_API) \ | |
+ && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) | |
+# if Py_LIMITED_API+0 >= 0x030a00A7 | |
+# define _Py_IncRef py3__Py_IncRef | |
+static void (*py3__Py_IncRef)(PyObject *); | |
+# else | |
+static void (*py3_Py_IncRef)(PyObject *); | |
+# endif | |
+# endif | |
# ifdef USE_LIMITED_API | |
static PyObject* (*py3_Py_CompileString)(const char *, const char *, int); | |
static PyObject* (*py3_PyEval_EvalCode)(PyObject *co, PyObject *globals, PyObject *locals); | |
@@ -603,6 +623,14 @@ static struct | |
{"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString}, | |
{"PyErr_SetObject", (PYTHON_PROC*)&py3_PyErr_SetObject}, | |
{"PyErr_ExceptionMatches", (PYTHON_PROC*)&py3_PyErr_ExceptionMatches}, | |
+# if defined(USE_LIMITED_API) \ | |
+ && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) | |
+# if Py_LIMITED_API+0 >= 0x030a00A7 | |
+ {"_Py_IncRef", (PYTHON_PROC*)&py3__Py_IncRef}, | |
+# else | |
+ {"Py_IncRef", (PYTHON_PROC*)&py3_Py_IncRef}, | |
+# endif | |
+# endif | |
# ifdef USE_LIMITED_API | |
{"Py_CompileString", (PYTHON_PROC*)&py3_Py_CompileString}, | |
{"PyEval_EvalCode", (PYTHON_PROC*)&PyEval_EvalCode}, | |
@@ -779,6 +807,20 @@ py3__Py_XDECREF(PyObject *op) | |
# define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op)) | |
# endif | |
+# if defined(USE_LIMITED_API) \ | |
+ && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) | |
+ static inline void | |
+py3__Py_XINCREF(PyObject *op) | |
+{ | |
+ if (op != NULL) | |
+ { | |
+ Py_INCREF(op); | |
+ } | |
+} | |
+# undef Py_XINCREF | |
+# define Py_XINCREF(op) py3__Py_XINCREF(_PyObject_CAST(op)) | |
+# endif | |
+ | |
# if PY_VERSION_HEX >= 0x030900b0 | |
static inline int | |
py3_PyType_HasFeature(PyTypeObject *type, unsigned long feature) | |
@@ -1084,7 +1126,7 @@ static int python_end_called = FALSE; | |
#ifdef USE_LIMITED_API | |
# define DESTRUCTOR_FINISH(self) \ | |
- ((freefunc)PyType_GetSlot(Py_TYPE(self), Py_tp_free))((PyObject*)self) | |
+ ((freefunc)PyType_GetSlot(Py_TYPE((PyObject*)self), Py_tp_free))((PyObject*)self) | |
#else | |
# define DESTRUCTOR_FINISH(self) Py_TYPE(self)->tp_free((PyObject*)self) | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment