ChangeSet ID: 21416 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/23 08:25:40
Modified files: dlls/shell32 : shfldr_desktop.c
Log message: Michael Jung mjung@iss.tu-darmstadt.de Also scan HKEY_CURRENT_USER for shell namespace extensions in Desktop folder. Fixed a handle leak in case of failing AddToEnumList call.
Patch: http://cvs.winehq.org/patch.py?id=21416
Old revision New revision Changes Path 1.49 1.50 +22 -21 wine/dlls/shell32/shfldr_desktop.c
Index: wine/dlls/shell32/shfldr_desktop.c diff -u -p wine/dlls/shell32/shfldr_desktop.c:1.49 wine/dlls/shell32/shfldr_desktop.c:1.50 --- wine/dlls/shell32/shfldr_desktop.c:1.49 23 Nov 2005 14:25:40 -0000 +++ wine/dlls/shell32/shfldr_desktop.c 23 Nov 2005 14:25:40 -0000 @@ -274,36 +274,37 @@ static BOOL CreateDesktopEnumList(IEnumI if (dwFlags & SHCONTF_FOLDERS) { HKEY hkey; - LONG r; + UINT i;
/* create the pidl for This item */ ret = AddToEnumList(list, _ILCreateMyComputer());
- r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, Desktop_NameSpaceW, - 0, KEY_READ, &hkey); - if (ret && ERROR_SUCCESS == r) - { - WCHAR iid[50]; - int i=0; - BOOL moreKeys = TRUE; - - while (ret && moreKeys) + for (i=0; i<2; i++) { + if (ret && !RegOpenKeyExW(i == 0 ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, + Desktop_NameSpaceW, 0, KEY_READ, &hkey)) { - DWORD size; + WCHAR iid[50]; + int i=0;
- size = sizeof (iid); - r = RegEnumKeyExW(hkey, i, iid, &size, 0, NULL, NULL, NULL); - if (ERROR_SUCCESS == r) + while (ret) { - ret = AddToEnumList(list, _ILCreateGuidFromStrW(iid)); - i++; + DWORD size; + LONG r; + + size = sizeof (iid); + r = RegEnumKeyExW(hkey, i, iid, &size, 0, NULL, NULL, NULL); + if (ERROR_SUCCESS == r) + { + ret = AddToEnumList(list, _ILCreateGuidFromStrW(iid)); + i++; + } + else if (ERROR_NO_MORE_ITEMS == r) + break; + else + ret = FALSE; } - else if (ERROR_NO_MORE_ITEMS == r) - moreKeys = FALSE; - else - ret = FALSE; + RegCloseKey(hkey); } - RegCloseKey(hkey); } }