]> git.alsa-project.org Git - alsa-python.git/commitdiff
fix tp_free() calls, remove wrong PyObject_GC_Del use
authorJaroslav Kysela <perex@perex.cz>
Tue, 27 Mar 2018 12:06:13 +0000 (14:06 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 27 Mar 2018 12:06:19 +0000 (14:06 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
pyalsa/alsacontrol.c
pyalsa/alsahcontrol.c
pyalsa/alsamixer.c
pyalsa/alsaseq.c

index d01d32e5cab4f3b0840f0c7fc2e8c3fd29cd0351..59837ec26f1fd2c7f9d1bc07411cd28a338a27c5 100644 (file)
@@ -158,6 +158,7 @@ pyalsacontrol_dealloc(struct pyalsacontrol *self)
 {
        if (self->handle != NULL)
                snd_ctl_close(self->handle);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsacontrol_getseters[] = {
@@ -202,8 +203,6 @@ MOD_INIT(alsacontrol)
        PyObject *d, *d1, *l1, *o;
        int i;
 
-       pyalsacontrol_type.tp_free = PyObject_GC_Del;
-
        if (PyType_Ready(&pyalsacontrol_type) < 0)
                return MOD_ERROR_VAL;
 
index cffdc5938529905f6aa9a5851133dd525a6dd6c5..ebee1b7c094aaaea06a85b5b82a7a3fff8b862de 100644 (file)
@@ -397,6 +397,7 @@ pyalsahcontrol_dealloc(struct pyalsahcontrol *self)
 {
        if (self->handle != NULL)
                snd_hctl_close(self->handle);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsahcontrol_getseters[] = {
@@ -620,12 +621,11 @@ static void
 pyalsahcontrolelement_dealloc(struct pyalsahcontrolelement *self)
 {
        if (self->elem) {
-               Py_XDECREF(self->callback);
+               Py_DECREF(self->callback);
                snd_hctl_elem_set_callback(self->elem, NULL);
        }
-       if (self->pyhandle) {
-               Py_XDECREF(self->pyhandle);
-       }
+       Py_XDECREF(self->pyhandle);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsahcontrolelement_getseters[] = {
@@ -855,9 +855,8 @@ pyalsahcontrolinfo_dealloc(struct pyalsahcontrolinfo *self)
 {
        if (self->info)
                snd_ctl_elem_info_free(self->info);
-       if (self->pyelem) {
-               Py_XDECREF(self->pyelem);
-       }
+       Py_XDECREF(self->pyelem);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsahcontrolinfo_getseters[] = {
@@ -1289,9 +1288,8 @@ pyalsahcontrolvalue_dealloc(struct pyalsahcontrolvalue *self)
 {
        if (self->value)
                snd_ctl_elem_value_free(self->value);
-       if (self->pyelem) {
-               Py_XDECREF(self->pyelem);
-       }
+       Py_XDECREF(self->pyelem);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsahcontrolvalue_getseters[] = {
@@ -1351,11 +1349,6 @@ MOD_INIT(alsahcontrol)
        PyObject *d, *d1, *l1, *o;
        int i;
 
-       pyalsahcontrol_type.tp_free = PyObject_GC_Del;
-       pyalsahcontrolelement_type.tp_free = PyObject_GC_Del;
-       pyalsahcontrolinfo_type.tp_free = PyObject_GC_Del;
-       pyalsahcontrolvalue_type.tp_free = PyObject_GC_Del;
-
        if (PyType_Ready(&pyalsahcontrol_type) < 0)
                return MOD_ERROR_VAL;
        if (PyType_Ready(&pyalsahcontrolelement_type) < 0)
index 1c06e3fab6945fc6ca10587786f9562637277493..39d7387500c4e54b68646044267f7f8547deb2c0 100644 (file)
@@ -255,6 +255,7 @@ pyalsamixer_dealloc(struct pyalsamixer *self)
 {
        if (self->handle != NULL)
                snd_mixer_close(self->handle);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsamixer_getseters[] = {
@@ -1125,9 +1126,8 @@ pyalsamixerelement_dealloc(struct pyalsamixerelement *self)
                Py_XDECREF(self->callback);
                snd_mixer_elem_set_callback(self->elem, NULL);
        }
-       if (self->pyhandle) {
-               Py_XDECREF(self->pyhandle);
-       }
+       Py_XDECREF(self->pyhandle);
+       Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 static PyGetSetDef pyalsamixerelement_getseters[] = {
@@ -1210,9 +1210,6 @@ MOD_INIT(alsamixer)
        PyObject *d, *d1, *l1, *o;
        int i;
 
-       pyalsamixer_type.tp_free = PyObject_GC_Del;
-       pyalsamixerelement_type.tp_free = PyObject_GC_Del;
-
        if (PyType_Ready(&pyalsamixer_type) < 0)
                return MOD_ERROR_VAL;
        if (PyType_Ready(&pyalsamixerelement_type) < 0)
index b58f3532c45bc43fa505545fbddbbbfa17073df7..0e7cc35bb99c610c9d60ab4098e99b828688fffa 100644 (file)
@@ -711,6 +711,7 @@ static void
 SeqEvent_dealloc(SeqEventObject *self) {
   FREECHECKED("event", self->event);
   FREECHECKED("buff", self->buff);
+  Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 /** alsaseq.SeqEvent type attribute: __doc__ */
@@ -2099,6 +2100,7 @@ Sequencer_dealloc(SequencerObject *self) {
     snd_seq_close(self->handle);
     self->handle = NULL;
   }
+  Py_TYPE(self)->tp_free((PyObject*)self);
 }
 
 /** alsaseq.Sequencer name attribute: __doc__ */
@@ -3330,9 +3332,6 @@ MOD_INIT(alsaseq)
 {
   PyObject *module;
 
-  SeqEventType.tp_free = PyObject_GC_Del;
-  SequencerType.tp_free = PyObject_GC_Del;
-
   if (PyType_Ready(&ConstantType) < 0)
     return MOD_ERROR_VAL;