Browse Source

Alsa API: Fix use of invalid card handle

tags/5.1.0
Jakob Leben 6 years ago
parent
commit
56cbfb5627
1 changed files with 8 additions and 4 deletions
  1. +8
    -4
      RtAudio.cpp

+ 8
- 4
RtAudio.cpp View File

@@ -6937,7 +6937,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;
@@ -6946,6 +6946,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 );
@@ -6965,7 +6966,8 @@ unsigned int RtApiAlsa :: getDeviceCount( void )
nDevices++;
}
nextcard:
snd_ctl_close( handle );
if ( handle )
snd_ctl_close( handle );
snd_card_next( &card );
}

@@ -6986,7 +6988,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;
@@ -6996,6 +6998,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 );
@@ -7018,7 +7021,8 @@ RtAudio::DeviceInfo RtApiAlsa :: getDeviceInfo( unsigned int device )
nDevices++;
}
nextcard:
snd_ctl_close( chandle );
if ( chandle )
snd_ctl_close( chandle );
snd_card_next( &card );
}



Loading…
Cancel
Save