diff --git a/Lib/test/test_ossaudiodev.py b/Lib/test/test_ossaudiodev.py index dda6137d19a..055ad6c167c 100644 --- a/Lib/test/test_ossaudiodev.py +++ b/Lib/test/test_ossaudiodev.py @@ -159,6 +159,15 @@ class OSSAudioDevTests(unittest.TestCase): dsp.close() self.assertTrue(dsp.closed) + def test_mixer_methods(self): + # Issue #8139: ossaudiodev didn't initialize its types properly, + # therefore some methods were unavailable. + mixer = ossaudiodev.openmixer() + try: + self.assertGreaterEqual(mixer.fileno(), 0) + finally: + mixer.close() + def test_main(): try: diff --git a/Misc/ACKS b/Misc/ACKS index 2ea5ab9f0df..e88db2ac0be 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -359,6 +359,7 @@ Ben Jackson David Jacobs Kevin Jacobs Kjetil Jacobsen +Bertrand Janin Geert Jansen Jack Jansen Bill Janssen diff --git a/Misc/NEWS b/Misc/NEWS index f82919b43fd..a39a7c8a6b9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -17,6 +17,10 @@ Core and Builtins Library ------- +- Issue #8139: ossaudiodev didn't initialize its types properly, therefore + some methods (such as oss_mixer_device.fileno()) were not available. + Initial patch by Bertrand Janin. + - Issue #7512: shutil.copystat() could raise an OSError when the filesystem didn't support chflags() (for example ZFS under FreeBSD). The error is now silenced. diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index 7686902bb57..6654d712e54 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -986,11 +986,17 @@ static struct PyModuleDef ossaudiodevmodule = { NULL }; -PyObject* +PyMODINIT_FUNC PyInit_ossaudiodev(void) { PyObject *m; + if (PyType_Ready(&OSSAudioType) < 0) + return NULL; + + if (PyType_Ready(&OSSMixerType) < 0) + return NULL; + m = PyModule_Create(&ossaudiodevmodule); if (m == NULL) return NULL;