wine/dlls/shell32 shfldr_desktop.c
ChangeSet ID: 21416 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard(a)winehq.org 2005/11/23 08:25:40 Modified files: dlls/shell32 : shfldr_desktop.c Log message: Michael Jung <mjung(a)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); } }
participants (1)
-
Alexandre Julliard