| http://bugs.gentoo.org/314627 |
| http://bugs.gentoo.org/257550 |
| |
| --- src/aomodule.c |
| +++ src/aomodule.c |
| @@ -4,7 +4,7 @@ |
| static ao_option * |
| dict_to_options(PyObject *dict) |
| { |
| - int pos = 0; |
| + Py_ssize_t pos = 0; |
| PyObject *key, *val; |
| ao_option *head = NULL; |
| int ret; |
| @@ -71,7 +71,7 @@ |
| |
| *overwrite = 0; |
| |
| - if(PyArg_ParseTupleAndKeywords(args, kwargs, "s|llllO!sl", |
| + if(PyArg_ParseTupleAndKeywords(args, kwargs, "s|iiiiO!si", |
| (char **) driver_name_kwlist, |
| &driver_name, |
| &format->bits, |
| @@ -84,7 +84,7 @@ |
| *driver_id = ao_driver_id(driver_name); |
| } else { |
| PyErr_Clear(); |
| - if(!(PyArg_ParseTupleAndKeywords(args, kwargs, "i|llllO!sl", |
| + if(!(PyArg_ParseTupleAndKeywords(args, kwargs, "i|iiiiO!si", |
| (char **) driver_id_kwlist, |
| driver_id, |
| &format->bits, |
| @@ -141,8 +141,9 @@ |
| return NULL; |
| } |
| |
| - retobj = (ao_Object *) PyObject_NEW(ao_Object, &ao_Type); |
| + retobj = (ao_Object *) PyObject_New(ao_Object, &ao_Type); |
| retobj->dev = dev; |
| + retobj->driver_id = driver_id; |
| return (PyObject *) retobj; |
| } |
| |
| @@ -150,7 +151,7 @@ |
| py_ao_dealloc(ao_Object *self) |
| { |
| ao_close(self->dev); |
| - PyMem_DEL(self); |
| + PyObject_Del(self); |
| } |
| |
| static PyObject * |
| @@ -184,7 +185,7 @@ |
| |
| /* It's a method */ |
| ao_Object *ao_self = (ao_Object *) self; |
| - info = ao_driver_info(ao_self->dev->driver_id); |
| + info = ao_driver_info(ao_self->driver_id); |
| |
| } else { |
| |
| --- src/aomodule.h |
| +++ src/aomodule.h |
| @@ -9,6 +9,7 @@ |
| typedef struct { |
| PyObject_HEAD |
| ao_device *dev; |
| + uint32_t driver_id; |
| } ao_Object; |
| |
| static PyObject *Py_aoError; |