[ros-diffs] [janderwald] 43097: - Fix a crash when an application hasnt defined a event label

janderwald at svn.reactos.org janderwald at svn.reactos.org
Sun Sep 20 19:44:52 CEST 2009


Author: janderwald
Date: Sun Sep 20 19:44:52 2009
New Revision: 43097

URL: http://svn.reactos.org/svn/reactos?rev=43097&view=rev
Log:
- Fix a crash when an application hasnt defined a event label

Modified:
    trunk/reactos/dll/cpl/mmsys/sounds.c

Modified: trunk/reactos/dll/cpl/mmsys/sounds.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/mmsys/sounds.c?rev=43097&r1=43096&r2=43097&view=diff
==============================================================================
--- trunk/reactos/dll/cpl/mmsys/sounds.c [iso-8859-1] (original)
+++ trunk/reactos/dll/cpl/mmsys/sounds.c [iso-8859-1] Sun Sep 20 19:44:52 2009
@@ -66,6 +66,8 @@
 
     while(pMap)
     {
+        ASSERT(pMap);
+        ASSERT(pMap->szName);
         if (!_tcscmp(pMap->szName, szName))
             return pMap;
 
@@ -77,6 +79,8 @@
 
     while(pMap)
     {
+        ASSERT(pMap);
+        ASSERT(pMap->szName);
         if (!_tcscmp(pMap->szName, szName))
             return pMap;
 
@@ -84,8 +88,21 @@
 
     }
 
-
-    return NULL;
+    pMap = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LABEL_MAP));
+    if (!pMap)
+        return NULL;
+
+    pMap->szName = pMap->szDesc = _tcsdup(szName);
+    if (!pMap->szName)
+    {
+        HeapFree(GetProcessHeap(), 0, pMap);
+        return NULL;
+    }
+    pMap->AppMap = pAppMap;
+    pMap->Next = s_Map;
+    s_Map = pMap;
+
+    return pMap;
 }
 
 VOID RemoveLabel(PLABEL_MAP pMap)
@@ -206,7 +223,7 @@
         return FALSE;
     }
 
-    pMap = HeapAlloc(GetProcessHeap(), 0, sizeof(LABEL_MAP));
+    pMap = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LABEL_MAP));
     if (!pMap)
     {
         return FALSE;
@@ -492,10 +509,9 @@
     {
         return FALSE;
     }
-
-    //MessageBox(hwndDlg, szLabelName, szAppName, MB_OK);
-
-    pLabel = FindLabel(NULL, szLabelName);
+    pLabel = FindLabel(pAppMap, szLabelName);
+
+    ASSERT(pLabel);
     RemoveLabel(pLabel);
 
     pLabel->AppMap = pAppMap;




More information about the Ros-diffs mailing list