diff options
| author | garyscavone <garyscavone@users.noreply.github.com> | 2019-02-13 10:34:30 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-13 10:34:30 -0500 |
| commit | 01cc43c819896862cb89ef34b6e0173c8a3f7b10 (patch) | |
| tree | ab891e9ed0f97a7ae537f231eaf392601abc5791 /RtAudio.cpp | |
| parent | 3174b038b9cc652174e2a86ec22d9884844c0184 (diff) | |
| parent | 56cbfb56274b97a44337e15c00a9d552ec7a6dbd (diff) | |
Merge pull request #185 from jleben/fix-alsa-get-device-count-error
Alsa API: Fix use of invalid card handle
Diffstat (limited to 'RtAudio.cpp')
| -rw-r--r-- | RtAudio.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/RtAudio.cpp b/RtAudio.cpp index b96990d..9c7f154 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -7140,7 +7140,7 @@ unsigned int RtApiAlsa :: getDeviceCount( void ) unsigned nDevices = 0; int result, subdevice, card; char name[64]; - snd_ctl_t *handle; + snd_ctl_t *handle = 0; // Count cards and devices card = -1; @@ -7149,6 +7149,7 @@ unsigned int RtApiAlsa :: getDeviceCount( void ) sprintf( name, "hw:%d", card ); result = snd_ctl_open( &handle, name, 0 ); if ( result < 0 ) { + handle = 0; errorStream_ << "RtApiAlsa::getDeviceCount: control open, card = " << card << ", " << snd_strerror( result ) << "."; errorText_ = errorStream_.str(); error( RtAudioError::WARNING ); @@ -7168,7 +7169,8 @@ unsigned int RtApiAlsa :: getDeviceCount( void ) nDevices++; } nextcard: - snd_ctl_close( handle ); + if ( handle ) + snd_ctl_close( handle ); snd_card_next( &card ); } @@ -7189,7 +7191,7 @@ RtAudio::DeviceInfo RtApiAlsa :: getDeviceInfo( unsigned int device ) unsigned nDevices = 0; int result, subdevice, card; char name[64]; - snd_ctl_t *chandle; + snd_ctl_t *chandle = 0; // Count cards and devices card = -1; @@ -7199,6 +7201,7 @@ RtAudio::DeviceInfo RtApiAlsa :: getDeviceInfo( unsigned int device ) sprintf( name, "hw:%d", card ); result = snd_ctl_open( &chandle, name, SND_CTL_NONBLOCK ); if ( result < 0 ) { + chandle = 0; errorStream_ << "RtApiAlsa::getDeviceInfo: control open, card = " << card << ", " << snd_strerror( result ) << "."; errorText_ = errorStream_.str(); error( RtAudioError::WARNING ); @@ -7221,7 +7224,8 @@ RtAudio::DeviceInfo RtApiAlsa :: getDeviceInfo( unsigned int device ) nDevices++; } nextcard: - snd_ctl_close( chandle ); + if ( chandle ) + snd_ctl_close( chandle ); snd_card_next( &card ); } |
