[1/2] winweesd.drv: Make sure esd_all_info is always initialized and freed when needed.

Francois Gouget fgouget at codeweavers.com
Tue Jun 16 12:15:45 CDT 2009


---
 dlls/wineesd.drv/audio.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/wineesd.drv/audio.c b/dlls/wineesd.drv/audio.c
index 3a3bce5..2694a73 100644
--- a/dlls/wineesd.drv/audio.c
+++ b/dlls/wineesd.drv/audio.c
@@ -1417,6 +1417,7 @@ static esd_player_info_t* wod_get_player(WINE_WAVEOUT* wwo, esd_info_t** esd_all
         if (wwo->esd_fd < 0)
         {
             WARN("esd_open_sound() failed (%d)\n", errno);
+            *esd_all_info = NULL;
             return NULL;
         }
     }
@@ -1469,7 +1470,8 @@ static DWORD wodGetVolume(WORD wDevID, LPDWORD lpdwVol)
     else
         ret = MMSYSERR_ERROR;
 
-    esd_free_all_info(esd_all_info);
+    if (esd_all_info)
+        esd_free_all_info(esd_all_info);
     return ret;
 }
 
@@ -1494,7 +1496,8 @@ static DWORD wodSetVolume(WORD wDevID, DWORD dwParam)
         esd_info_t* esd_all_info;
         /* wod_get_player sets the stream_id as a side effect */
         wod_get_player(wwo, &esd_all_info);
-        esd_free_all_info(esd_all_info);
+        if (esd_all_info)
+            esd_free_all_info(esd_all_info);
     }
     if (!wwo->stream_id)
         return MMSYSERR_ERROR;
-- 
1.6.3.1




More information about the wine-patches mailing list