Module: wine Branch: master Commit: 1d57a31d92983b2ef26752ba2fcee90978254c9d URL: http://source.winehq.org/git/wine.git/?a=commit;h=1d57a31d92983b2ef26752ba2f... Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Thu May 21 11:24:29 2009 -0500 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 0b5d7b2..9c0c9a0 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 */ {