From 2ed0e32f3c9a9ebbe287494b478ca266fe278318 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 21 May 2009 11:24:29 -0500 Subject: [PATCH] shell32: fail properly when no pidl is passed to SHCreateShellItem --- dlls/shell32/shellitem.c | 6 +++++- dlls/shell32/tests/shlfolder.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/shell32/shellitem.c b/dlls/shell32/shellitem.c index 643f1b5..08b2e24 100644 --- a/dlls/shell32/shellitem.c +++ b/dlls/shell32/shellitem.c @@ -276,7 +276,11 @@ HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, TRACE("(%p,%p,%p,%p)\n", pidlParent, psfParent, pidl, ppsi); - if (!pidlParent && !psfParent && pidl) + if (!pidl) + { + return E_INVALIDARG; + } + else if (!pidlParent && !psfParent) { new_pidl = ILClone(pidl); if (!new_pidl) diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c index 2777f93..6f8e41b 100644 --- a/dlls/shell32/tests/shlfolder.c +++ b/dlls/shell32/tests/shlfolder.c @@ -1783,7 +1783,7 @@ static void test_SHCreateShellItem(void) pidl_abstestfile = pILCombine(pidl_cwd, pidl_testfile); ret = pSHCreateShellItem(NULL, NULL, NULL, &shellitem); - todo_wine ok(ret == E_INVALIDARG, "SHCreateShellItem returned %x\n", ret); + ok(ret == E_INVALIDARG, "SHCreateShellItem returned %x\n", ret); #if 0 /* crashes on Windows XP */ -- 1.5.4.3