Jeff Latimer : ntdll:
Set default timeout in NtCreateMailslotFile if parameter is NULL.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Feb 28 08:19:01 CST 2007
Module: wine
Branch: master
Commit: 74db5a192e6dc593ce77d5233dea8b1530eabb28
URL: http://source.winehq.org/git/wine.git/?a=commit;h=74db5a192e6dc593ce77d5233dea8b1530eabb28
Author: Jeff Latimer <lats at yless4u.com.au>
Date: Tue Feb 27 23:42:06 2007 +1100
ntdll: Set default timeout in NtCreateMailslotFile if parameter is NULL.
---
dlls/ntdll/file.c | 11 ++++++++++-
dlls/ntdll/tests/file.c | 11 +++++++++++
2 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index ffda379..2929590 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2202,6 +2202,7 @@ NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE pHandle, ULONG DesiredAccess,
ULONG CreateOptions, ULONG MailslotQuota, ULONG MaxMessageSize,
PLARGE_INTEGER TimeOut)
{
+ LARGE_INTEGER timeout;
static const WCHAR leadin[] = {
'\\','?','?','\\','M','A','I','L','S','L','O','T','\\'};
NTSTATUS ret;
@@ -2219,13 +2220,21 @@ NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE pHandle, ULONG DesiredAccess,
return STATUS_OBJECT_NAME_INVALID;
}
+ /*
+ * For a NULL TimeOut pointer set the default timeout value
+ */
+ if (!TimeOut)
+ timeout.QuadPart = -1;
+ else
+ timeout.QuadPart = TimeOut->QuadPart;
+
SERVER_START_REQ( create_mailslot )
{
req->access = DesiredAccess;
req->attributes = attr->Attributes;
req->rootdir = attr->RootDirectory;
req->max_msgsize = MaxMessageSize;
- req->read_timeout = (TimeOut->QuadPart <= 0) ? TimeOut->QuadPart / -10000 : -1;
+ req->read_timeout = (timeout.QuadPart <= 0) ? timeout.QuadPart / -10000 : -1;
wine_server_add_data( req, attr->ObjectName->Buffer,
attr->ObjectName->Length );
ret = wine_server_call( req );
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 9baadfe..f3a3867 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -70,6 +70,17 @@ static void nt_mailslot_test(void)
ok( rc == STATUS_ACCESS_VIOLATION, "rc = %x not c0000005 STATUS_ACCESS_VIOLATION\n", rc);
/*
+ * Test to see if the Timeout can be NULL
+ */
+ rc = pNtCreateMailslotFile(&hslot, DesiredAccess,
+ &attr, &IoStatusBlock, CreateOptions, MailslotQuota, MaxMessageSize,
+ NULL);
+ ok( rc == STATUS_SUCCESS, "rc = %x not STATUS_SUCCESS\n", rc);
+ ok( hslot != 0, "Handle is invalid\n");
+
+ if ( rc == STATUS_SUCCESS ) rc = pNtClose(hslot);
+
+ /*
* Test a valid call
*/
rc = pNtCreateMailslotFile(&hslot, DesiredAccess,
More information about the wine-cvs
mailing list