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;
