Author: akhaldi
Date: Fri Sep  9 16:55:59 2011
New Revision: 53662

URL: http://svn.reactos.org/svn/reactos?rev=53662&view=rev
Log:
[SHELL32]
* Merge r53661.

Modified:
    trunk/reactos/   (props changed)
    trunk/reactos/dll/win32/shell32/shv_item_new.cpp
    trunk/reactos/dll/win32/shell32/shv_item_new.h

Propchange: trunk/reactos/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep  9 16:55:59 2011
@@ -8,5 +8,5 @@
 /branches/reactx/reactos:49994-49995
 /branches/ros-amd64-bringup:36852
 
/branches/ros-amd64-bringup/reactos:34711-34712,34741,34743,34770,34780-34782,34803,34812,34839,34842,34864,34870,34874,34877,34908-34909,34917,34965,35323-35324,35347-35348,35361,35436,35509,35515,35588,35655,35683,35739,35746,35762,35771,35777,35781,35789,35805,35823,35827,35902,35904-35906,35942,35947-35949,35952-35953,35966,36011-36013,36172,36360,36380,36388-36389,36393,36397,36443,36445,36475,36502-36503,36505,36570,36614,36852,36898-36899,36930,36936,36949,36951,36958,36961,36964,36969,36972,36987-36988,36990,36992,37019,37322-37323,37333-37334,37434,37472,37475,37536,37820-37821,37868-37869,37873,37990-37991,38013-38014,38092,38100,38148-38151,38264-38265,38268,38355,39151,39333,39335,39345,39639,40120,40122-40123,40125,40127-40128,40155,40247,40324,40608,40753,40926-40928,40986-40987,40989,40991,40993,40995-40996,41000-41001,41027-41030,41044-41045,41047-41050,41052,41070,41082-41086,41097-41098,41101,41449,41479-41480,41483-41485,41499-41500,41502,41531,41536,41540,41546-41547,41549,43080,43426,43451,43454,43506,43566,43574,43598,43600-43602,43604-43605,43677,43682,43757,43775,43836,43838-43840,43852,43857-43858,43860,43905-43907,43952,43954,43965,43969,43979,43981,43992,44002,44036-44037,44039-44040,44044-44045,44053,44065,44095,44123,44143-44144,44205,44238,44257,44259,44294,44338-44339,44385,44389,44391,44426,44460,44467-44468,44470-44471,44499,44501,44503-44504,44506,44510-44512,44521,44523-44526,44530,44540,44601,44634,44639,44772,44818,45124,45126-45127,45430,46394,46404,46478,46511,46523-46524,46526,46534-46535,46537-46539,46589,46805,46868,47472,47846-47847,47878,47882
-/branches/shell32_new-bringup:51893-53652
+/branches/shell32_new-bringup:51893-53652,53661
 /branches/tcp-rewrite-branch:48720,48840-48841,49424-49426,49454

Modified: trunk/reactos/dll/win32/shell32/shv_item_new.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shv_item_new.cpp?rev=53662&r1=53661&r2=53662&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/shv_item_new.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shv_item_new.cpp [iso-8859-1] Fri Sep  9 
16:55:59 2011
@@ -31,8 +31,41 @@
     szPath = NULL;
 }
 
+
 CNewMenu::~CNewMenu()
 {
+    UnloadShellItems();
+}
+
+void CNewMenu::UnloadItem(SHELLNEW_ITEM *item)
+{
+    // bail if the item is clearly invalid
+    if (NULL == item)
+        return;
+
+    if (NULL != item->szTarget)
+        free(item->szTarget);
+
+    free(item->szDesc);
+    free(item->szIcon);
+    free(item->szExt);
+
+    HeapFree(GetProcessHeap(), 0, item);
+}
+
+void CNewMenu::UnloadShellItems()
+{
+    SHELLNEW_ITEM *pCurItem;
+
+    while (s_SnHead)
+    {
+        pCurItem = s_SnHead;
+        s_SnHead = s_SnHead->Next;
+
+        UnloadItem(pCurItem);
+    }
+
+    s_SnHead = NULL;
 }
 
 static
@@ -85,22 +118,6 @@
 
   RegCloseKey(hKey);
   return TRUE;
-}
-
-void CNewMenu::UnloadItem(SHELLNEW_ITEM *item)
-{
-    // bail if the item is clearly invalid
-    if (NULL == item)
-        return;
-
-    if (NULL != item->szTarget)
-        free(item->szTarget);
-
-    free(item->szDesc);
-    free(item->szIcon);
-    free(item->szExt);
-
-    HeapFree(GetProcessHeap(), 0, item);
 }
 
 CNewMenu::SHELLNEW_ITEM *CNewMenu::LoadItem(LPWSTR szKeyName)
@@ -200,6 +217,8 @@
   if (!LoadStringW(shell32_hInstance, FCIDM_SHVIEW_NEW, szNew, sizeof(szNew) / 
sizeof(WCHAR)))
       szNew[0] = 0;
   szNew[MAX_PATH-1] = 0;
+
+  UnloadShellItems();
 
   dwIndex = 0;
   do

Modified: trunk/reactos/dll/win32/shell32/shv_item_new.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shv_item_new.h?rev=53662&r1=53661&r2=53662&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/shv_item_new.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shv_item_new.h [iso-8859-1] Fri Sep  9 
16:55:59 2011
@@ -57,6 +57,7 @@
        ~CNewMenu();
        SHELLNEW_ITEM *LoadItem(LPWSTR szKeyName);
     void UnloadItem(SHELLNEW_ITEM *item);
+       void UnloadShellItems();
        BOOL LoadShellNewItems();
        UINT InsertShellNewItems(HMENU hMenu, UINT idFirst, UINT idMenu);
        HRESULT DoShellNewCmd(LPCMINVOKECOMMANDINFO lpcmi);


Reply via email to