ntdll: fix return values for NtQueryInformationThread
ThreadDescriptorTableEntry
Peter Oberndorfer
kumbayo84 at arcor.de
Sun Oct 15 12:31:47 CDT 2006
this makes info segments in winedbg not spew out thousands of "fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for c0000119"
Changelog:
fix return values for NtQueryInformationThread ThreadDescriptorTableEntry
-------------- next part --------------
From 7fa73769ed29aefa2aedc8d0fd5a0c8c35f375ec Mon Sep 17 00:00:00 2001
From: Peter Oberndorfer <kumbayo84 at arcor.de>
Date: Sun, 15 Oct 2006 19:24:24 +0200
Subject: [PATCH] ntdll: fix return values for NtQueryInformationThread ThreadDescriptorTableEntry
---
dlls/ntdll/tests/info.c | 2 --
dlls/ntdll/thread.c | 6 +++---
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index 77b4c21..9886af3 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -779,7 +779,6 @@ static void test_query_thread_descriptor
memset(&nullentry, 0, sizeof(nullentry));
ok(memcmp(&tdi.Entry, &nullentry, sizeof(nullentry)) == 0, "expected null selector to be empty\n");
- todo_wine{
tdi.Selector = 0x4; /* invalid LDT */
status = pNtQueryInformationThread(GetCurrentThread(), ThreadDescriptorTableEntry, &tdi, sizeof(tdi), &ReturnLength);
ok(status == STATUS_NO_LDT, "expected STATUS_NO_LDT for invalid LDT selector 0x4, got 0x%08x\n", status);
@@ -787,7 +786,6 @@ static void test_query_thread_descriptor
tdi.Selector = 0x50; /* invalid GDT */
status = pNtQueryInformationThread(GetCurrentThread(), ThreadDescriptorTableEntry, &tdi, sizeof(tdi), &ReturnLength);
ok(status == STATUS_ACCESS_VIOLATION, "expected STATUS_ACCESS_VIOLATION for invalid GDT selector 0x50, got 0x%08x\n", status);
- }
ctx.ContextFlags = CONTEXT_SEGMENTS | CONTEXT_CONTROL;
ok(GetThreadContext(GetCurrentThread(), &ctx)!= 0, "GetThreadContext on own thread failed\n");
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 151ff1e..b0d17d1 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -1136,11 +1136,11 @@ #ifdef __i386__
{
if (sel == (wine_get_cs() & ~3))
tdi->Entry.HighWord.Bits.Type |= 8; /* code segment */
- else status = STATUS_ACCESS_DENIED;
+ else status = STATUS_ACCESS_VIOLATION;
}
}
}
- else
+ else /* LDT selector */
{
SERVER_START_REQ( get_selector_entry )
{
@@ -1150,7 +1150,7 @@ #ifdef __i386__
if (!status)
{
if (!(reply->flags & WINE_LDT_FLAGS_ALLOCATED))
- status = STATUS_INVALID_LDT_OFFSET;
+ status = STATUS_NO_LDT;
else
{
wine_ldt_set_base ( &tdi->Entry, (void *)reply->base );
--
1.4.2
More information about the wine-patches
mailing list