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