Changeset 1362

Show
Ignore:
Timestamp:
02/28/08 16:43:57 (6 months ago)
Author:
aknudsen
Message:

Ensure stream validity in PaAlsa?_GetStream*Card

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • portaudio/branches/v19-devel/src/hostapi/alsa/pa_linux_alsa.c

    r1278 r1362  
    35313531#endif 
    35323532 
     3533static PaError GetAlsaStreamPointer( PaStream* s, PaAlsaStream** stream ) 
     3534{ 
     3535    PaError result = paNoError; 
     3536    PaUtilHostApiRepresentation* hostApi; 
     3537    PaAlsaHostApiRepresentation* alsaHostApi; 
     3538     
     3539    PA_ENSURE( PaUtil_ValidateStreamPointer( s ) ); 
     3540    PA_ENSURE( PaUtil_GetHostApiRepresentation( &hostApi, paALSA ) ); 
     3541    alsaHostApi = (PaAlsaHostApiRepresentation*)hostApi; 
     3542     
     3543    PA_UNLESS( PA_STREAM_REP( s )->streamInterface == &alsaHostApi->callbackStreamInterface 
     3544            || PA_STREAM_REP( s )->streamInterface == &alsaHostApi->blockingStreamInterface, 
     3545        paIncompatibleStreamHostApi ); 
     3546 
     3547    *stream = (PaAlsaStream*)s; 
     3548error: 
     3549    return paNoError; 
     3550} 
     3551 
    35333552PaError PaAlsa_GetStreamInputCard(PaStream* s, int* card) { 
    3534     PaAlsaStream *stream = (PaAlsaStream *) s; 
     3553    PaAlsaStream *stream; 
     3554    PaError result = paNoError; 
    35353555    snd_pcm_info_t* pcmInfo; 
    3536     PaError result = paNoError; 
     3556 
     3557    PA_ENSURE( GetAlsaStreamPointer( s, &stream ) ); 
    35373558 
    35383559    /* XXX: More descriptive error? */ 
     
    35483569 
    35493570PaError PaAlsa_GetStreamOutputCard(PaStream* s, int* card) { 
    3550     PaAlsaStream *stream = (PaAlsaStream *) s; 
     3571    PaAlsaStream *stream; 
     3572    PaError result = paNoError; 
    35513573    snd_pcm_info_t* pcmInfo; 
    3552     PaError result = paNoError; 
     3574 
     3575    PA_ENSURE( GetAlsaStreamPointer( s, &stream ) ); 
    35533576 
    35543577    /* XXX: More descriptive error? */