shell32: SHELL32_GetItemAttributes()
Martin Fuchs
martin-fuchs at gmx.net
Sun Feb 19 02:00:30 CST 2006
Changelog:
avoid to recurse SHELL32_GetItemAttributes() calls
Index: shlfolder.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shlfolder.c,v
retrieving revision 1.110
diff -u -p -d -r1.110 shlfolder.c
--- shlfolder.c 11 Feb 2006 19:39:52 -0000 1.110
+++ shlfolder.c 18 Feb 2006 14:02:08 -0000
@@ -425,11 +425,20 @@ HRESULT SHELL32_GetItemAttributes (IShel
if (!dwAttributes && has_guid) {
WCHAR path[MAX_PATH];
+ STRRET strret;
/* File attributes are not present in the internal PIDL structure, so get them from the file system. */
- if (SHGetPathFromIDListW(pidl, path))
- dwAttributes = GetFileAttributesW(path);
- }
+
+ HRESULT hr = IShellFolder_GetDisplayNameOf(psf, pidl, SHGDN_FORPARSING, &strret);
+
+ if (SUCCEEDED(hr)) {
+ hr = StrRetToBufW(&strret, pidl, path, MAX_PATH);
+
+ /* call GetFileAttributes() only for file system paths, not for parsing names like "::{...}" */
+ if (SUCCEEDED(hr) && path[0]!=':')
+ dwAttributes = GetFileAttributesW(path);
+ }
+ }
/* Set common attributes */
*pdwAttributes |= SFGAO_FILESYSTEM | SFGAO_DROPTARGET | SFGAO_HASPROPSHEET | SFGAO_CANDELETE |
More information about the wine-patches
mailing list