mirror of
https://github.com/reactos/reactos.git
synced 2024-08-13 14:47:31 +00:00
Allocate enough memory to keep file details
svn path=/trunk/; revision=30010
This commit is contained in:
parent
7af600178a
commit
ce94228341
|
@ -217,37 +217,43 @@ static HRESULT WINAPI RecycleBin_ParseDisplayName(IShellFolder2 *This, HWND hwnd
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
PDELETED_FILE_DETAILS_W
|
||||
UnpackDetailsFromPidl(LPCITEMIDLIST pidl)
|
||||
{
|
||||
return (PDELETED_FILE_DETAILS_W)&pidl->mkid.abID;
|
||||
}
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
CBEnumBitBucket(IN PVOID Context, IN HANDLE hDeletedFile)
|
||||
{
|
||||
PDELETED_FILE_DETAILS_W pFileDetails;
|
||||
DWORD dwSize = 0;
|
||||
DWORD dwSize, dwTotalSize;
|
||||
LPITEMIDLIST pidl = NULL;
|
||||
BOOL ret;
|
||||
|
||||
TRACE("CBEnumBitBucket entered\n");
|
||||
GetDeletedFileDetailsW(hDeletedFile,
|
||||
0,
|
||||
NULL,
|
||||
&dwSize);
|
||||
|
||||
if (!dwSize)
|
||||
if (!GetDeletedFileDetailsW(hDeletedFile,
|
||||
0,
|
||||
NULL,
|
||||
&dwSize) &&
|
||||
GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
ERR("GetDeletedFileDetailsW failed\n");
|
||||
return FALSE;
|
||||
}
|
||||
dwTotalSize = FIELD_OFFSET(ITEMIDLIST, mkid.abID) + dwSize;
|
||||
|
||||
pidl = SHAlloc(dwSize);
|
||||
pidl = SHAlloc(dwTotalSize);
|
||||
if (!pidl)
|
||||
{
|
||||
ERR("No memory\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pidl->mkid.cb = dwSize;
|
||||
pidl->mkid.abID[0] = 0;
|
||||
pFileDetails = (PDELETED_FILE_DETAILS_W) &pidl->mkid.abID[1];
|
||||
pidl->mkid.cb = dwTotalSize;
|
||||
pFileDetails = UnpackDetailsFromPidl(pidl);
|
||||
|
||||
if (!GetDeletedFileDetailsW(hDeletedFile,
|
||||
dwSize,
|
||||
|
@ -260,15 +266,11 @@ CBEnumBitBucket(IN PVOID Context, IN HANDLE hDeletedFile)
|
|||
}
|
||||
|
||||
ret = AddToEnumList((IEnumIDList*)Context, pidl);
|
||||
TRACE("Returning %d\n", ret);
|
||||
CloseRecycleBinHandle(hDeletedFile);
|
||||
return ret;
|
||||
}
|
||||
|
||||
PDELETED_FILE_DETAILS_W
|
||||
UnpackDetailsFromPidl(LPCITEMIDLIST pidl)
|
||||
{
|
||||
return (PDELETED_FILE_DETAILS_W)&pidl->mkid.abID[1];
|
||||
}
|
||||
|
||||
static HRESULT WINAPI RecycleBin_EnumObjects(IShellFolder2 *iface, HWND hwnd, SHCONTF grfFlags, IEnumIDList **ppenumIDList)
|
||||
{
|
||||
RecycleBin *This = (RecycleBin *)iface;
|
||||
|
|
Loading…
Reference in a new issue