[ros-diffs] [cfinck] 51070: Merge 51053, 51069

cfinck at svn.reactos.org cfinck at svn.reactos.org
Wed Mar 16 16:57:58 UTC 2011


Author: cfinck
Date: Wed Mar 16 16:57:58 2011
New Revision: 51070

URL: http://svn.reactos.org/svn/reactos?rev=51070&view=rev
Log:
Merge 51053, 51069

Modified:
    branches/ros-branch-0_3_13/reactos/   (props changed)
    branches/ros-branch-0_3_13/reactos/dll/win32/shell32/clipboard.c

Propchange: branches/ros-branch-0_3_13/reactos/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 16 16:57:58 2011
@@ -3,4 +3,4 @@
 /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
-/trunk/reactos:51043-51044,51046-51048,51058,51062-51063,51067
+/trunk/reactos:51043-51044,51046-51048,51053,51058,51062-51063,51067,51069

Modified: branches/ros-branch-0_3_13/reactos/dll/win32/shell32/clipboard.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_13/reactos/dll/win32/shell32/clipboard.c?rev=51070&r1=51069&r2=51070&view=diff
==============================================================================
--- branches/ros-branch-0_3_13/reactos/dll/win32/shell32/clipboard.c [iso-8859-1] (original)
+++ branches/ros-branch-0_3_13/reactos/dll/win32/shell32/clipboard.c [iso-8859-1] Wed Mar 16 16:57:58 2011
@@ -47,51 +47,55 @@
 HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
 {
 	UINT i;
-	int rootlen = 0,size = 0;
-	WCHAR wszRootPath[MAX_PATH];
+	int size = 0;
 	WCHAR wszFileName[MAX_PATH];
-	HGLOBAL hGlobal;
+	HGLOBAL hGlobal = NULL;
 	DROPFILES *pDropFiles;
 	int offset;
-
-	TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
+	LPITEMIDLIST *pidls;
+
+	TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
+
+	pidls = HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls));
+	if (!pidls)
+		goto cleanup;
 
 	/* get the size needed */
 	size = sizeof(DROPFILES);
 
-	SHGetPathFromIDListW(pidlRoot, wszRootPath);
-	PathAddBackslashW(wszRootPath);
-	rootlen = wcslen(wszRootPath);
-
 	for (i=0; i<cidl;i++)
 	{
-	  _ILSimpleGetTextW(apidl[i], wszFileName, MAX_PATH);
-	  size += (rootlen + wcslen(wszFileName) + 1) * sizeof(WCHAR);
+	  pidls[i] = ILCombine(pidlRoot, apidl[i]);
+	  SHGetPathFromIDListW(pidls[i], wszFileName);
+	  size += (wcslen(wszFileName) + 1) * sizeof(WCHAR);
 	}
 
 	size += sizeof(WCHAR);
 
 	/* Fill the structure */
 	hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
-	if(!hGlobal) return hGlobal;
+	if(!hGlobal)
+		goto cleanup;
 
         pDropFiles = (DROPFILES *)GlobalLock(hGlobal);
 	offset = (sizeof(DROPFILES) + sizeof(WCHAR) - 1) / sizeof(WCHAR);
         pDropFiles->pFiles = offset * sizeof(WCHAR);
         pDropFiles->fWide = TRUE;
 
-	wcscpy(wszFileName, wszRootPath);
-
 	for (i=0; i<cidl;i++)
 	{
-
-	  _ILSimpleGetTextW(apidl[i], wszFileName + rootlen, MAX_PATH - rootlen);
+	  SHGetPathFromIDListW(pidls[i], wszFileName);
 	  wcscpy(((WCHAR*)pDropFiles)+offset, wszFileName);
 	  offset += wcslen(wszFileName) + 1;
+	  ILFree(pidls[i]);
 	}
 
 	((WCHAR*)pDropFiles)[offset] = 0;
 	GlobalUnlock(hGlobal);
+
+cleanup:
+	if(pidls)
+		HeapFree(GetProcessHeap(), 0, pidls);
 
 	return hGlobal;
 }




More information about the Ros-diffs mailing list