Francois Gouget : winweesd.drv: Make sure esd_all_info is always initialized and freed when needed.

Alexandre Julliard julliard at winehq.org
Wed Jun 17 10:43:23 CDT 2009


Module: wine
Branch: master
Commit: 45311c6724ab5c46e928d90bfb59f3c763acb9ad
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=45311c6724ab5c46e928d90bfb59f3c763acb9ad

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Tue Jun 16 19:15:45 2009 +0200

winweesd.drv: Make sure esd_all_info is always initialized and freed when needed.

---

 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 4ce176f..f198ace 100644
--- a/dlls/wineesd.drv/audio.c
+++ b/dlls/wineesd.drv/audio.c
@@ -1416,6 +1416,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;
         }
     }
@@ -1468,7 +1469,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;
 }
 
@@ -1493,7 +1495,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;




More information about the wine-cvs mailing list