summaryrefslogtreecommitdiff
path: root/RtAudio.cpp
diff options
context:
space:
mode:
authorgaryscavone <garyscavone@users.noreply.github.com>2019-02-13 10:34:30 -0500
committerGitHub <noreply@github.com>2019-02-13 10:34:30 -0500
commit01cc43c819896862cb89ef34b6e0173c8a3f7b10 (patch)
treeab891e9ed0f97a7ae537f231eaf392601abc5791 /RtAudio.cpp
parent3174b038b9cc652174e2a86ec22d9884844c0184 (diff)
parent56cbfb56274b97a44337e15c00a9d552ec7a6dbd (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.cpp12
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 );
}