blob: e08e8fc328aa5d5eb8469411946e49bcd8a8898b [file] [log] [blame]
diff --git a/src/pycurl.c b/src/pycurl.c
index a17a23b..a07cb51 100644
--- a/src/pycurl.c
+++ b/src/pycurl.c
@@ -845,6 +845,7 @@ util_curl_xdecref(CurlObject *self, int flags, CURL *handle)
ZAP(self->pro_cb);
ZAP(self->debug_cb);
ZAP(self->ioctl_cb);
+ ZAP(self->opensocket_cb);
}
if (flags & 8) {
@@ -2284,6 +2285,13 @@ util_multi_close(CurlMultiObject *self)
}
}
+static void
+util_multi_xdecref(CurlMultiObject *self)
+{
+ ZAP(self->dict);
+ ZAP(self->t_cb);
+ ZAP(self->s_cb);
+}
static void
do_multi_dealloc(CurlMultiObject *self)
@@ -2291,7 +2299,7 @@ do_multi_dealloc(CurlMultiObject *self)
PyObject_GC_UnTrack(self);
Py_TRASHCAN_SAFE_BEGIN(self)
- ZAP(self->dict);
+ util_multi_xdecref(self);
util_multi_close(self);
PyObject_GC_Del(self);
@@ -2317,7 +2325,7 @@ do_multi_close(CurlMultiObject *self)
static int
do_multi_clear(CurlMultiObject *self)
{
- ZAP(self->dict);
+ util_multi_xdecref(self);
return 0;
}