ntdll: Adjust NtAreMappedFilesTheSame to win8 behaviour

André Hentschel nerv at dawncrow.de
Tue Nov 12 14:39:06 CST 2013


---
 dlls/kernel32/tests/virtual.c | 6 ++++--
 dlls/ntdll/virtual.c          | 4 ++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c
index a77fdb9..0d417a6 100644
--- a/dlls/kernel32/tests/virtual.c
+++ b/dlls/kernel32/tests/virtual.c
@@ -1053,10 +1053,12 @@ static void test_NtAreMappedFilesTheSame(void)
     CloseHandle( file2 );
 
     status = pNtAreMappedFilesTheSame( ptr, ptr );
-    ok( status == STATUS_NOT_SAME_DEVICE, "NtAreMappedFilesTheSame returned %x\n", status );
+    ok( status == STATUS_SUCCESS || broken(status == STATUS_NOT_SAME_DEVICE),
+        "NtAreMappedFilesTheSame returned %x\n", status );
 
     status = pNtAreMappedFilesTheSame( ptr, (char *)ptr + 30 );
-    ok( status == STATUS_NOT_SAME_DEVICE, "NtAreMappedFilesTheSame returned %x\n", status );
+    ok( status == STATUS_SUCCESS || broken(status == STATUS_NOT_SAME_DEVICE),
+        "NtAreMappedFilesTheSame returned %x\n", status );
 
     status = pNtAreMappedFilesTheSame( ptr, GetModuleHandleA("kernel32.dll") );
     ok( status == STATUS_NOT_SAME_DEVICE, "NtAreMappedFilesTheSame returned %x\n", status );
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index e438eaa..3b9cad8 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -2963,10 +2963,10 @@ NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID addr1, PVOID addr2)
         status = STATUS_INVALID_ADDRESS;
     else if ((view1->protect & VPROT_VALLOC) || (view2->protect & VPROT_VALLOC))
         status = STATUS_CONFLICTING_ADDRESSES;
-    else if (!(view1->protect & VPROT_IMAGE) || !(view2->protect & VPROT_IMAGE))
-        status = STATUS_NOT_SAME_DEVICE;
     else if (view1 == view2)
         status = STATUS_SUCCESS;
+    else if (!(view1->protect & VPROT_IMAGE) || !(view2->protect & VPROT_IMAGE))
+        status = STATUS_NOT_SAME_DEVICE;
     else if (!stat_mapping_file( view1, &st1 ) && !stat_mapping_file( view2, &st2 ) &&
              st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino)
         status = STATUS_SUCCESS;
-- 
1.8.1.2




More information about the wine-patches mailing list