From: weigand@informatik.uni-erlangen.de (Ulrich Weigand)
Newsgroups: local.list.wine.patches
Subject: Bugfix: GetThreadSelectorEntry() and read-write flag
Date: 19 Nov 1999 00:37:52 +0100
Organization: home
Lines: 35
Message-ID: <199911181807.TAA00875@faui11.informatik.uni-erlangen.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Resent-Date: Thu, 18 Nov 1999 11:07:48 -0700
X-To: wine-patches@winehq.com
X-Mailer: ELM [version 2.4 PL24]
X-Resent-Message-ID: <QXxWWB.A.n8C.zBEN4@ursula.gmcl.com>
X-Resent-From: wine-patches@winehq.com
X-Reply-To: wine-devel@winehq.com
X-Mailing-List: <wine-patches@winehq.com> archive/latest/2142
X-Loop: wine-patches@winehq.com
X-Precedence: list
X-Resent-Sender: wine-patches-request@winehq.com


Hello,

GetThreadSelectorEntry() reported read-only segments as read-write and
vice versa.  This caused a bug in native OLE thunking code, affecting
(at least) WinWord ...

Bye,
Ulrich

ChangeLog:

	* memory/selector.c
	Bugfix: GetThreadSelectorEntry() sets read-write flag incorrectly.


Index: memory/selector.c
diff -ur wine-cvs/memory/selector.c wine-uw/memory/selector.c
--- wine-cvs/memory/selector.c	Wed Nov 17 15:51:16 1999
+++ wine-uw/memory/selector.c	Wed Nov 17 16:43:21 1999
@@ -621,7 +621,7 @@
     ldtent->HighWord.Bits.Sys = 0;
     ldtent->HighWord.Bits.Pres = 1;
     ldtent->HighWord.Bits.Type = 0x10|(ldtentry.type << 2);
-    if (ldtentry.read_only)
+    if (!ldtentry.read_only)
     	ldtent->HighWord.Bits.Type|=0x2;
     ldtent->HighWord.Bits.Granularity = ldtentry.limit_in_pages;
     ldtent->HighWord.Bits.Default_Big = ldtentry.seg_32bit;

-- 
  Ulrich Weigand,
  IMMD 1, Universitaet Erlangen-Nuernberg,
  Martensstr. 3, D-91058 Erlangen, Phone: +49 9131 85-7688

---
