static void lobject_dealloc(PyObject* obj) { lobjectObject *self = (lobjectObject *)obj; if (lobject_close(self) < 0) PyErr_Print(); Py_XDECREF((PyObject*)self->conn); Dprintf("lobject_dealloc: deleted lobject object at %p, refcnt = " FORMAT_CODE_PY_SSIZE_T, obj, obj->ob_refcnt); obj->ob_type->tp_free(obj); }
static void lobject_dealloc(PyObject* obj) { lobjectObject *self = (lobjectObject *)obj; if (lobject_close(self) < 0) PyErr_Print(); Py_XDECREF((PyObject*)self->conn); PyMem_Free(self->smode); Dprintf("lobject_dealloc: deleted lobject object at %p, refcnt = " FORMAT_CODE_PY_SSIZE_T, obj, Py_REFCNT(obj)); Py_TYPE(obj)->tp_free(obj); }
static PyObject * psyco_lobj_close(lobjectObject *self, PyObject *args) { /* file-like objects can be closed multiple times and remember that closing the current transaction is equivalent to close all the opened large objects */ if (!lobject_is_closed(self) && !self->conn->autocommit && self->conn->mark == self->mark) { Dprintf("psyco_lobj_close: closing lobject at %p", self); if (lobject_close(self) < 0) return NULL; } Py_RETURN_NONE; }
static PyObject * psyco_lobj_close(lobjectObject *self, PyObject *args) { /* file-like objects can be closed multiple times and remember that closing the current transaction is equivalent to close all the opened large objects */ if (!lobject_is_closed(self) && self->conn->isolation_level != ISOLATION_LEVEL_AUTOCOMMIT && self->conn->mark == self->mark) { Dprintf("psyco_lobj_close: closing lobject at %p", self); if (lobject_close(self) < 0) return NULL; } Py_INCREF(Py_None); return Py_None; }