Module: wine Branch: master Commit: 50fe9b87eda4de4aa2f03172f6e0f83ec89a93dd URL: http://source.winehq.org/git/wine.git/?a=commit;h=50fe9b87eda4de4aa2f03172f6...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Mon Aug 6 08:38:17 2012 +1000
scrrun: Correct FileExists for directories.
---
dlls/scrrun/filesystem.c | 4 +++- dlls/scrrun/tests/filesystem.c | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index a4e6f26..ade3310 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -215,11 +215,13 @@ static HRESULT WINAPI filesys_DriveExists(IFileSystem3 *iface, BSTR DriveSpec,
static HRESULT WINAPI filesys_FileExists(IFileSystem3 *iface, BSTR path, VARIANT_BOOL *ret) { + DWORD attrs; TRACE("%p %s %p\n", iface, debugstr_w(path), ret);
if (!ret) return E_POINTER;
- *ret = GetFileAttributesW(path) != INVALID_FILE_ATTRIBUTES ? VARIANT_TRUE : VARIANT_FALSE; + attrs = GetFileAttributesW(path); + *ret = attrs != INVALID_FILE_ATTRIBUTES && !(attrs & FILE_ATTRIBUTE_DIRECTORY) ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; }
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index a19a835..d557acf 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -82,6 +82,20 @@ static void test_interfaces(void) ok(b == VARIANT_FALSE, "got %x\n", b); SysFreeString(path);
+ path = SysAllocString(file_path); + b = VARIANT_FALSE; + hr = IFileSystem3_FileExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_TRUE, "got %x\n", b); + SysFreeString(path); + + path = SysAllocString(windows_path); + b = VARIANT_TRUE; + hr = IFileSystem3_FileExists(fs3, path, &b); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + ok(b == VARIANT_FALSE, "got %x\n", b); + SysFreeString(path); + /* Folder Exists */ hr = IFileSystem3_FolderExists(fs3, NULL, NULL); ok(hr == E_POINTER, "got 0x%08x, expected 0x%08x\n", hr, E_POINTER);