Date: Tue, 14 Aug 2001 15:30:37 +0300 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: djgpp-workers AT delorie DOT com Message-Id: <2950-Tue14Aug2001153036+0300-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9 CC: acottrel AT ihug DOT com DOT au, pavenis AT lanet DOT lv, sandmann AT clio DOT rice DOT edu In-reply-to: <3B791F66.22654.6DAEEC@localhost> (pavenis@lanet.lv) Subject: Re: Selector Exhaustion References: <3B791F66 DOT 22654 DOT 6DAEEC AT localhost> Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > From: pavenis AT lanet DOT lv > Date: Tue, 14 Aug 2001 12:53:58 +0300 > > Here is patch that seems to work both under Win98SE and > WinNT 4.0+SP6 (with my test program). I added wrapper procedure > around original direct_exec_tail() as I think it's easier to debug if > needed. Thanks. > + if (is_nt) > + { > + sel1 = __dpmi_allocate_ldt_descriptors (1); > + } > + else > + { > + char * map = desc_map; > + for (i=0x0000007; i<0x00010000; i+=8) > + { /* FIXME: Use __dpmi_get_selector_increment_value() instead of 8 ? */ > + *map++ = (__dpmi_get_descriptor_access_rights(i) & 0x80) ? 0 : 1; > + } > + } I think we need to make sure the else clause doesn't get run on plain MS-DOS, at least with CWSDPMI. It's a waste of time in that case.