diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index d7ad255e517..35b43e2f124 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3758,6 +3758,9 @@ static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR source, BSTR de { TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); + if(!source || !destination) + return E_INVALIDARG; + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 79af87591ff..1ba0e81a2d1 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2591,6 +2591,13 @@ static void test_MoveFile(void) hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); SysFreeString(str); + + str = SysAllocString(L"null.txt"); + hr = IFileSystem3_MoveFile(fs3, str, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IFileSystem3_MoveFile(fs3, NULL, str); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + SysFreeString(str); } static void test_DoOpenPipeStream(void)