From a02d5eb0b87c5358e2431cd3c96e76f20bb51e88 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 9 Mar 2016 13:06:13 +0800 Subject: server: CreateFileMapping should not fail without SEC_COMMIT for a named file section. Anonymous file mapping already behaves this way. --- dlls/kernel32/tests/virtual.c | 3 --- server/mapping.c | 5 +++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index 3d60557..c6e7ebe 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -4030,9 +4030,7 @@ todo_wine SetLastError(0xdeadbef); mapping = CreateFileMappingA(file, NULL, PAGE_READONLY|SEC_RESERVE, 0, 0, NULL); -todo_wine ok(mapping != 0, "CreateFileMapping error %u\n", GetLastError()); - if (!mapping) goto skip1; memset(&info, 0x55, sizeof(info)); ret = 0xdeadbeef; @@ -4044,7 +4042,6 @@ todo_wine ok(info.basic.Size.QuadPart == fsize, "expected %#lx, got %#x/%08x\n", fsize, info.basic.Size.HighPart, info.basic.Size.LowPart); CloseHandle(mapping); -skip1: CloseHandle(file); SetLastError(0xdeadbef); diff --git a/server/mapping.c b/server/mapping.c index b68f281..1f18c5c 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -533,8 +533,9 @@ static struct object *create_mapping( struct object *root, const struct unicode_ if (flags & SEC_RESERVE) { - set_error( STATUS_INVALID_PARAMETER ); - goto error; + if (!(mapping->committed = mem_alloc( offsetof(struct ranges, ranges[8]) ))) goto error; + mapping->committed->count = 0; + mapping->committed->max = 8; } if (!(file = get_file_obj( current->process, handle, access ))) goto error; fd = get_obj_fd( (struct object *)file ); -- 2.8.0