From 719ed1d7f5f8b351021e8cf7e0b6b4df8a8cb0af Mon Sep 17 00:00:00 2001 From: Alexander Shadchin Date: Mon, 22 Mar 2021 03:38:29 +0300 Subject: [PATCH 1/2] Fix asyncpg with Py_DEBUG mode --- asyncpg/protocol/record/recordobj.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/asyncpg/protocol/record/recordobj.c b/asyncpg/protocol/record/recordobj.c index 8ee27f59..c086ea99 100644 --- a/asyncpg/protocol/record/recordobj.c +++ b/asyncpg/protocol/record/recordobj.c @@ -31,6 +31,7 @@ ApgRecord_New(PyTypeObject *type, PyObject *desc, Py_ssize_t size) { ApgRecordObject *o; Py_ssize_t i; + int need_gc_track = 0; if (size < 0 || desc == NULL || !ApgRecordDesc_CheckExact(desc)) { PyErr_BadInternalCall(); @@ -54,7 +55,7 @@ ApgRecord_New(PyTypeObject *type, PyObject *desc, Py_ssize_t size) } } - PyObject_GC_Track(o); + need_gc_track = 1; } else { assert(PyType_IsSubtype(type, &ApgRecord_Type)); @@ -78,6 +79,9 @@ ApgRecord_New(PyTypeObject *type, PyObject *desc, Py_ssize_t size) Py_INCREF(desc); o->desc = (ApgRecordDescObject*)desc; o->self_hash = -1; + if (need_gc_track) { + PyObject_GC_Track(o); + } return (PyObject *) o; } From b974d6781f54e164077518440911cc1e069798a6 Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Mon, 22 Mar 2021 09:29:36 -0700 Subject: [PATCH 2/2] Update asyncpg/protocol/record/recordobj.c --- asyncpg/protocol/record/recordobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/asyncpg/protocol/record/recordobj.c b/asyncpg/protocol/record/recordobj.c index c086ea99..e912782f 100644 --- a/asyncpg/protocol/record/recordobj.c +++ b/asyncpg/protocol/record/recordobj.c @@ -31,7 +31,7 @@ ApgRecord_New(PyTypeObject *type, PyObject *desc, Py_ssize_t size) { ApgRecordObject *o; Py_ssize_t i; - int need_gc_track = 0; + int need_gc_track = 0; if (size < 0 || desc == NULL || !ApgRecordDesc_CheckExact(desc)) { PyErr_BadInternalCall();