Paul Chitescu : shell32.dll: Return SE_ERR_FNF if file not found before checking for associations.

Alexandre Julliard julliard at winehq.org
Tue Dec 9 06:24:26 CST 2008


Module: wine
Branch: master
Commit: cd616409ba367e601bd61df44f57e436a14d0a7b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cd616409ba367e601bd61df44f57e436a14d0a7b

Author: Paul Chitescu <paulc at voip.null.ro>
Date:   Mon Dec  8 21:06:12 2008 +0200

shell32.dll: Return SE_ERR_FNF if file not found before checking for associations.

---

 dlls/shell32/shlexec.c       |    6 ++++++
 dlls/shell32/tests/shlexec.c |    8 ++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index e8c6e7b..515bb48 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -588,6 +588,12 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOpera
     }
     else
     {
+        /* Did we get something? Anything? */
+        if (xlpFile[0]==0)
+        {
+            TRACE("Returning SE_ERR_FNF\n");
+            return SE_ERR_FNF;
+        }
         /* First thing we need is the file's extension */
         extension = strrchrW(xlpFile, '.'); /* Assume last "." is the one; */
         /* File->Run in progman uses */
diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c
index 80ccdf7..4ea855a 100644
--- a/dlls/shell32/tests/shlexec.c
+++ b/dlls/shell32/tests/shlexec.c
@@ -627,8 +627,8 @@ typedef struct
 static filename_tests_t filename_tests[]=
 {
     /* Test bad / nonexistent filenames */
-    {NULL,           "%s\\nonexistent.shlexec", 0x11, SE_ERR_FNF},
-    {NULL,           "%s\\nonexistent.noassoc", 0x11, SE_ERR_FNF},
+    {NULL,           "%s\\nonexistent.shlexec", 0x0, SE_ERR_FNF},
+    {NULL,           "%s\\nonexistent.noassoc", 0x0, SE_ERR_FNF},
 
     /* Standard tests */
     {NULL,           "%s\\test file.shlexec",   0x0, 33},
@@ -644,7 +644,7 @@ static filename_tests_t filename_tests[]=
     {NULL,           "%s\\test file.shlexec.noassoc", 0x0, SE_ERR_NOASSOC},
 
     /* Test alternate verbs */
-    {"LowerL",       "%s\\nonexistent.shlexec", 0x11, SE_ERR_FNF},
+    {"LowerL",       "%s\\nonexistent.shlexec", 0x0, SE_ERR_FNF},
     {"LowerL",       "%s\\test file.noassoc",   0x0,  SE_ERR_NOASSOC},
 
     {"QuotedLowerL", "%s\\test file.shlexec",   0x0, 33},
@@ -868,7 +868,7 @@ static void test_find_executable(void)
     ok(rc > 32, "FindExecutable(%s) returned %d\n", filename, rc);
 
     rc=(int)FindExecutableA("test file.sfe", NULL, command);
-    todo_wine ok(rc == SE_ERR_FNF, "FindExecutable(%s) returned %d\n", filename, rc);
+    ok(rc == SE_ERR_FNF, "FindExecutable(%s) returned %d\n", filename, rc);
 
     delete_test_association(".sfe");
 




More information about the wine-cvs mailing list