]> Repos - portaudio/commitdiff
alsa: fixed Segmentation fault due to dangling pointer left by snd_lib_error_set_hand...
authordmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Fri, 15 Oct 2010 20:39:23 +0000 (20:39 +0000)
committerdmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Fri, 15 Oct 2010 20:39:23 +0000 (20:39 +0000)
src/hostapi/alsa/pa_linux_alsa.c

index 4e61ba060eec81d858274f3c6228936fac4be6e9..0033da8c99cd53dffef6c05eaf505d6590a7b2ee 100644 (file)
@@ -239,9 +239,12 @@ static const PaAlsaDeviceInfo *GetDeviceInfo( const PaUtilHostApiRepresentation
     return (const PaAlsaDeviceInfo *)hostApi->deviceInfos[device];
 }
 
-static void AlsaErrorHandler(const char *file, int line, const char *function, int err, const char *fmt, ...)
+/** Uncommented because AlsaErrorHandler is unused for anything good yet. If AlsaErrorHandler is 
+    to be used, do not forget to register this callback in PaAlsa_Initialize, and unregister in Terminate.
+*/
+/*static void AlsaErrorHandler(const char *file, int line, const char *function, int err, const char *fmt, ...)
 {
-}
+}*/
 
 PaError PaAlsa_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
 {
@@ -262,7 +265,10 @@ PaError PaAlsa_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex
     (*hostApi)->OpenStream = OpenStream;
     (*hostApi)->IsFormatSupported = IsFormatSupported;
 
-    ENSURE_( snd_lib_error_set_handler(AlsaErrorHandler), paUnanticipatedHostError );
+    /** If AlsaErrorHandler is to be used, do not forget to unregister callback pointer in 
+        Terminate function.
+    */
+    /*ENSURE_( snd_lib_error_set_handler(AlsaErrorHandler), paUnanticipatedHostError );*/
 
     PA_ENSURE( BuildDeviceList( alsaHostApi ) );
 
@@ -308,6 +314,10 @@ static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
     PaAlsaHostApiRepresentation *alsaHostApi = (PaAlsaHostApiRepresentation*)hostApi;
 
     assert( hostApi );
+    
+    /** See AlsaErrorHandler and PaAlsa_Initialize for details.
+    */
+    /*snd_lib_error_set_handler(NULL);*/
 
     if( alsaHostApi->allocations )
     {