Andrew Nguyen : kernel32: Correct the last error of CreateProcessW with an empty application name string .
Alexandre Julliard
julliard at winehq.org
Mon May 18 08:13:19 CDT 2009
Module: wine
Branch: master
Commit: 645e59c490bcbd57a4a97a076295e171c44a80c1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=645e59c490bcbd57a4a97a076295e171c44a80c1
Author: Andrew Nguyen <arethusa26 at gmail.com>
Date: Mon May 18 05:07:10 2009 -0500
kernel32: Correct the last error of CreateProcessW with an empty application name string.
---
dlls/kernel32/process.c | 9 ++-------
dlls/kernel32/tests/process.c | 20 ++++++++++++++++++++
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 8f486e0..9e6aeaa 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -210,15 +210,10 @@ static HANDLE open_exe_file( const WCHAR *name )
{
WCHAR buffer[MAX_PATH];
/* file doesn't exist, check for builtin */
- if (!contains_path( name )) goto error;
- if (!get_builtin_path( name, NULL, buffer, sizeof(buffer) )) goto error;
- handle = 0;
+ if (contains_path( name ) && get_builtin_path( name, NULL, buffer, sizeof(buffer) ))
+ handle = 0;
}
return handle;
-
- error:
- SetLastError( ERROR_FILE_NOT_FOUND );
- return INVALID_HANDLE_VALUE;
}
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 6aac615..479a376 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -935,6 +935,26 @@ static void test_CommandLine(void)
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
}
+
+ buffer[0] = '\0';
+
+ /* Test empty application name parameter. */
+ SetLastError(0xdeadbeef);
+ ret = CreateProcessA(buffer, NULL, NULL, NULL, FALSE, 0L, NULL, NULL, &startup, &info);
+ ok(!ret, "CreateProcessA unexpectedly succeeded\n");
+ ok(GetLastError() == ERROR_PATH_NOT_FOUND ||
+ broken(GetLastError() == ERROR_ACCESS_DENIED) /* Win98 */,
+ "Expected ERROR_PATH_NOT_FOUND, got %d\n", GetLastError());
+
+ buffer2[0] = '\0';
+
+ /* Test empty application name and command line parameters. */
+ SetLastError(0xdeadbeef);
+ ret = CreateProcessA(buffer, buffer2, NULL, NULL, FALSE, 0L, NULL, NULL, &startup, &info);
+ ok(!ret, "CreateProcessA unexpectedly succeeded\n");
+ ok(GetLastError() == ERROR_PATH_NOT_FOUND ||
+ broken(GetLastError() == ERROR_ACCESS_DENIED) /* Win98 */,
+ "Expected ERROR_PATH_NOT_FOUND, got %d\n", GetLastError());
}
static void test_Directory(void)
More information about the wine-cvs
mailing list