mirror of
https://github.com/reactos/reactos.git
synced 2025-07-26 23:14:17 +00:00
[SHELL32] Make Recycle Bin PIDL data handling more robust (#7328)
This commit is contained in:
parent
08a6834075
commit
abf3bde91b
1 changed files with 17 additions and 4 deletions
|
@ -750,15 +750,20 @@ HRESULT WINAPI CRecycleBin::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, LPS
|
||||||
TRACE("(%p, %p, %d, %p)\n", this, pidl, iColumn, pDetails);
|
TRACE("(%p, %p, %d, %p)\n", this, pidl, iColumn, pDetails);
|
||||||
if (iColumn >= COLUMNS_COUNT)
|
if (iColumn >= COLUMNS_COUNT)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
pDetails->fmt = RecycleBinColumns[iColumn].fmt;
|
|
||||||
pDetails->cxChar = RecycleBinColumns[iColumn].cxChars;
|
|
||||||
if (pidl == NULL)
|
if (pidl == NULL)
|
||||||
|
{
|
||||||
|
pDetails->fmt = RecycleBinColumns[iColumn].fmt;
|
||||||
|
pDetails->cxChar = RecycleBinColumns[iColumn].cxChars;
|
||||||
return SHSetStrRet(&pDetails->str, RecycleBinColumns[iColumn].column_name_id);
|
return SHSetStrRet(&pDetails->str, RecycleBinColumns[iColumn].column_name_id);
|
||||||
|
}
|
||||||
|
|
||||||
if (iColumn == COLUMN_NAME)
|
if (iColumn == COLUMN_NAME)
|
||||||
return GetDisplayNameOf(pidl, SHGDN_NORMAL, &pDetails->str);
|
return GetDisplayNameOf(pidl, SHGDN_NORMAL, &pDetails->str);
|
||||||
|
|
||||||
pFileDetails = _ILGetRecycleStruct(pidl);
|
pFileDetails = _ILGetRecycleStruct(pidl);
|
||||||
|
if (!pFileDetails && FAILED_UNEXPECTEDLY(E_INVALIDARG))
|
||||||
|
return E_INVALIDARG;
|
||||||
switch (iColumn)
|
switch (iColumn)
|
||||||
{
|
{
|
||||||
case COLUMN_DATEDEL:
|
case COLUMN_DATEDEL:
|
||||||
|
@ -766,8 +771,16 @@ HRESULT WINAPI CRecycleBin::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, LPS
|
||||||
break;
|
break;
|
||||||
case COLUMN_DELFROM:
|
case COLUMN_DELFROM:
|
||||||
pszBackslash = wcsrchr(pFileDetails->szName, L'\\');
|
pszBackslash = wcsrchr(pFileDetails->szName, L'\\');
|
||||||
Length = (pszBackslash - pFileDetails->szName);
|
if (!pszBackslash)
|
||||||
memcpy((LPVOID)buffer, pFileDetails->szName, Length * sizeof(WCHAR));
|
{
|
||||||
|
ERR("Filename '%ls' not a valid path?\n", pFileDetails->szName);
|
||||||
|
Length = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Length = (pszBackslash - pFileDetails->szName);
|
||||||
|
memcpy((LPVOID)buffer, pFileDetails->szName, Length * sizeof(WCHAR));
|
||||||
|
}
|
||||||
buffer[Length] = UNICODE_NULL;
|
buffer[Length] = UNICODE_NULL;
|
||||||
if (buffer[0] && buffer[1] == L':' && !buffer[2])
|
if (buffer[0] && buffer[1] == L':' && !buffer[2])
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue