On 8/21/2011 19:20, Jay Yang wrote:
The first two patches in the sequence relate to context menus and the last three to property sheets, but some of the changes in the last three depend on a function I created in the second patch so I've sent them as a sequence.
Changes from last time (for this file): cleaned up the code.
--- dlls/shell32/shlmenu.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 166 insertions(+), 4 deletions(-) + HKEY *new_keys=NULL;
+ new_keys = HeapAlloc(GetProcessHeap(),0,sizeof(HKEY)*cKeys); No need to initialize that explicitly.
+ ULONG status = RegOpenKeyExW(aKeys[i],cmenu_handler_key,0,KEY_READ,&new_key); + if(status==ERROR_SUCCESS) This call return LSTATUS which is signed LONG. A common way to test return value is to use (!RegOpen*()). + CLSID *clsid_table=NULL; ... + clsid_table = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(CLSID)*handler_count); Same here, no need to NULL it. + static const CLSID zero_clsid = {0}; + CLSID *curr_clsid = clsid_table+j; + if(IsEqualCLSID(curr_clsid,&zero_clsid)) There's CLSID_NULL for that. + TRACE("Loading shell extension with clsid %s\n",shdebugstr_guid(&id)); I'm not sure shdebugstr_guid() is supposed to know shell extension names. + if(new_keys[i]) + RegCloseKey(new_keys[i]); This null check is redundant.