[1/5] schedsvc: Return correct error code when a being loaded xml doesn't exist.

Dmitry Timoshkov dmitry at baikal.ru
Wed Apr 9 04:50:42 CDT 2014


---
 dlls/schedsvc/schedsvc.c        | 8 +++++++-
 dlls/taskschd/tests/scheduler.c | 1 -
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/schedsvc/schedsvc.c b/dlls/schedsvc/schedsvc.c
index aa99b03..a0daab2 100644
--- a/dlls/schedsvc/schedsvc.c
+++ b/dlls/schedsvc/schedsvc.c
@@ -245,10 +245,16 @@ static int detect_encoding(const void *buffer, DWORD size)
 static HRESULT read_xml(const WCHAR *name, WCHAR **xml)
 {
     HANDLE hfile;
-    DWORD size;
+    DWORD size, attrs;
     char *src;
     int cp;
 
+    attrs = GetFileAttributesW(name);
+    if (attrs == INVALID_FILE_ATTRIBUTES)
+        return HRESULT_FROM_WIN32(GetLastError());
+    if (attrs & FILE_ATTRIBUTE_DIRECTORY)
+        return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND);
+
     hfile = CreateFileW(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
     if (hfile == INVALID_HANDLE_VALUE)
         return HRESULT_FROM_WIN32(GetLastError());
diff --git a/dlls/taskschd/tests/scheduler.c b/dlls/taskschd/tests/scheduler.c
index 5e5d303..3f8ba3e 100644
--- a/dlls/taskschd/tests/scheduler.c
+++ b/dlls/taskschd/tests/scheduler.c
@@ -760,7 +760,6 @@ static void test_GetTask(void)
     ok(hr == S_OK, "CreateFolder error %#x\n", hr);
 
     hr = ITaskFolder_GetTask(root, Wine, &task1);
-todo_wine
     ok(hr == HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND), "expected ERROR_PATH_NOT_FOUND, got %#x\n", hr);
 
     MultiByteToWideChar(CP_ACP, 0, xml1, -1, xmlW, sizeof(xmlW)/sizeof(xmlW[0]));
-- 
1.9.1




More information about the wine-patches mailing list