1995-03-19 18:39:39 +01:00
|
|
|
/*
|
|
|
|
* Selector manipulation functions
|
|
|
|
*
|
|
|
|
* Copyright 1995 Alexandre Julliard
|
2002-03-10 00:29:33 +01:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
2006-05-18 14:49:52 +02:00
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
|
|
|
|
Release 950403
Sun Apr 2 18:31:12 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [Configure] [if1632/Imakefile]
Removed new build and short names options.
* [if1632/*.c] [tools/build.c]
Implemented compiled call-back functions for better performance;
all the relay code is now done in assembly code generated by the
build program.
Relay code is no longer dependent on being loaded below 64K.
* [loader/resource.c]
Fixed memory leak in LoadString(). A fix will also be needed for
other resources.
* [memory/global.c]
Implemented global heap arenas, so we can store informations about
global blocks, like lock counts or owner handle.
Implemented FarGetOwner() and FarSetOwner().
Implemented global heap TOOLHELP functions.
* [memory/selector.c]
Bug fix: it was not possible to re-use a free selector.
Sun Apr 2 01:34:52 1995 Constantine Sapuntzakis (csapuntz@mit.edu)
* [controls/listbox.c]
Major work on listbox code
- Many bugs fixed (still many bugs)
- More messages supported
- Code simplified
Fri Mar 31 03:27:16 EST 1995 William Magro (wmagro@tc.cornell.edu)
* [controls/edit.c]
Lots of bug fixes related to diappearing text, lost carets,
highlighting, segmentation faults, occurance of random
characters, insertion of characters over selection, misplaced
caret location, display corruption, end of line behavior, etc.
* [controls/widgets.c]
EDIT class doesn't want to use CS_PARENTDC flag.
Thu Mar 30 20:58:25 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [loader/selector.c]
FixupFunctionPrologs() should also handle multiple data modules.
(this bug only became visible because MakeProcInstance() was fixed
in 950319)
* [misc/dosfs.c]
Simplified DOS_SimplifyPath.
Small fix to DOS_opendir to reuse an entry if an open directory
is opened again, to prevent "too many open directories" messages.
Thu Mar 30 12:05:05 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [if1632/compobj.spec][include/compobj.h][misc/compobj.c]
CoDisconnectObject: new stub function
* [include/msdos.h]
fix DOSVERSION
* [loader/ne_image.c]
NE_FixupSegment: Be more generous on additive fixups
* [if1632/user.spec][misc/network.c]
Add more WNet* stubs
Wed Mar 29 11:47:22 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
DlgDirList(): send segptr instead of linear pointer
in message to static control
* [controls/menu.c]
Tried to implement ownerdrawn menuitems. Doesn't work.
* [if1632/gdi.spec] [include/windows.h] [objects/font.c]
Provide a stub for GetRasterizerCaps()
* [loader/selector.c]
Pass end address instead of length to LocalInit() in
CreateSelectors()
* [memory/local.c]
LocalInit(): If there's already a local heap in the segment, do
nothing and return TRUE
* [objects/linedda.c]
Replaced buggy LineDDA() with a Bresenham algorithm. Should work
now.
* [windows/cursor.c]
LoadCursor()/CreateCursor(): Cleaned up the mess. Needs some
more work still.
Tue Mar 21 17:54:43 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [if1632/relay.c] [if1632/callback.c] [include/dlls.h]
[if1632/winprocs.spec] [if1632/winprocs.c] [include/winprocs.h]
[controls/widgets.c] [misc/shell.c] [misc/commdlg.c]
[windows/nonclient.c] [misc/message.c]
Added a new builtin DLL that provides 16 bit entry points for all
the Def*Procs (DefDlgProc, ButtonProc etc.). OWL programs work
again.
* [misc/shell.c]
RegOpenKey()/RegCreateKey() bugs fixed.
* [loader/ne_image.c]
Skipping the initialization of a DLL when CS == 0 was broken.
1995-04-03 18:55:37 +02:00
|
|
|
#include <string.h>
|
2000-11-25 02:31:17 +01:00
|
|
|
|
1999-02-19 11:37:02 +01:00
|
|
|
#include "wine/winbase16.h"
|
2001-07-19 02:39:09 +02:00
|
|
|
#include "wine/server.h"
|
2002-03-10 00:29:33 +01:00
|
|
|
#include "wine/debug.h"
|
2009-10-08 19:25:30 +02:00
|
|
|
#include "kernel16_private.h"
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2002-03-10 00:29:33 +01:00
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(selector);
|
1999-04-19 16:56:29 +02:00
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
const struct ldt_copy *ldt_copy = NULL;
|
2000-11-14 02:54:49 +01:00
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
static ULONG bitmap_data[LDT_SIZE / 32];
|
|
|
|
static RTL_BITMAP ldt_bitmap = { LDT_SIZE, bitmap_data };
|
|
|
|
static const LDT_ENTRY null_entry;
|
|
|
|
static WORD first_ldt_entry = 32;
|
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
/* get the number of selectors needed to cover up to the selector limit */
|
2007-03-17 11:22:45 +01:00
|
|
|
static inline WORD get_sel_count( WORD sel )
|
2000-11-14 02:54:49 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
return (ldt_get_limit( sel ) >> 16) + 1;
|
2000-11-14 02:54:49 +01:00
|
|
|
}
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
static inline int is_gdt_sel( WORD sel )
|
|
|
|
{
|
|
|
|
return !(sel & 4);
|
|
|
|
}
|
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
static LDT_ENTRY ldt_make_entry( const void *base, unsigned int limit, unsigned char flags )
|
|
|
|
{
|
|
|
|
LDT_ENTRY entry;
|
|
|
|
|
|
|
|
entry.BaseLow = (WORD)(ULONG_PTR)base;
|
|
|
|
entry.HighWord.Bits.BaseMid = (BYTE)((ULONG_PTR)base >> 16);
|
|
|
|
entry.HighWord.Bits.BaseHi = (BYTE)((ULONG_PTR)base >> 24);
|
|
|
|
if ((entry.HighWord.Bits.Granularity = (limit >= 0x100000))) limit >>= 12;
|
|
|
|
entry.LimitLow = (WORD)limit;
|
|
|
|
entry.HighWord.Bits.LimitHi = limit >> 16;
|
|
|
|
entry.HighWord.Bits.Dpl = 3;
|
|
|
|
entry.HighWord.Bits.Pres = 1;
|
|
|
|
entry.HighWord.Bits.Type = flags;
|
|
|
|
entry.HighWord.Bits.Sys = 0;
|
|
|
|
entry.HighWord.Bits.Reserved_0 = 0;
|
|
|
|
entry.HighWord.Bits.Default_Big = (flags & LDT_FLAGS_32BIT) != 0;
|
|
|
|
return entry;
|
|
|
|
}
|
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* init_selectors
|
|
|
|
*/
|
|
|
|
void init_selectors(void)
|
|
|
|
{
|
2020-06-01 12:52:05 +02:00
|
|
|
const struct ldt_copy **ldt_copy_ptr;
|
2020-04-02 10:49:36 +02:00
|
|
|
if (!is_gdt_sel( get_gs() )) first_ldt_entry += 512;
|
|
|
|
if (!is_gdt_sel( get_fs() )) first_ldt_entry += 512;
|
2020-04-01 22:55:24 +02:00
|
|
|
RtlSetBits( &ldt_bitmap, 0, first_ldt_entry );
|
2020-06-01 12:52:05 +02:00
|
|
|
ldt_copy_ptr = (void *)GetProcAddress( GetModuleHandleA("ntdll.dll"), "__wine_ldt_copy" );
|
|
|
|
if (ldt_copy_ptr) ldt_copy = *ldt_copy_ptr;
|
2020-04-01 22:55:24 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* ldt_is_system
|
|
|
|
*/
|
|
|
|
BOOL ldt_is_system( WORD sel )
|
|
|
|
{
|
|
|
|
return is_gdt_sel( sel ) || ((sel >> 3) < first_ldt_entry);
|
|
|
|
}
|
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* ldt_is_valid
|
|
|
|
*/
|
|
|
|
BOOL ldt_is_valid( WORD sel )
|
|
|
|
{
|
|
|
|
return !ldt_is_system( sel ) && RtlAreBitsSet( &ldt_bitmap, sel >> 3, 1 );
|
|
|
|
}
|
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* ldt_get_ptr
|
|
|
|
*/
|
|
|
|
void *ldt_get_ptr( WORD sel, DWORD offset )
|
|
|
|
{
|
|
|
|
if (ldt_is_system( sel )) return (void *)offset;
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!(ldt_get_flags( sel ) & LDT_FLAGS_32BIT)) offset &= 0xffff;
|
|
|
|
return (char *)ldt_get_base( sel ) + offset;
|
2020-04-01 22:55:24 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* ldt_get_entry
|
|
|
|
*/
|
|
|
|
BOOL ldt_get_entry( WORD sel, LDT_ENTRY *entry )
|
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel ))
|
2020-04-01 22:55:24 +02:00
|
|
|
{
|
|
|
|
*entry = null_entry;
|
|
|
|
return FALSE;
|
|
|
|
}
|
2020-04-01 22:56:30 +02:00
|
|
|
*entry = ldt_make_entry( ldt_get_base( sel ), ldt_get_limit( sel ), ldt_get_flags( sel ));
|
2020-04-01 22:55:24 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* ldt_set_entry
|
|
|
|
*/
|
|
|
|
void ldt_set_entry( WORD sel, LDT_ENTRY entry )
|
|
|
|
{
|
|
|
|
NtSetLdtEntries( sel, entry, 0, null_entry );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static ULONG alloc_entries( ULONG count )
|
|
|
|
{
|
|
|
|
ULONG idx = RtlFindClearBitsAndSet( &ldt_bitmap, count, first_ldt_entry );
|
|
|
|
|
|
|
|
if (idx == ~0u) return 0;
|
|
|
|
return (idx << 3) | 7;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void free_entries( ULONG sel, ULONG count )
|
|
|
|
{
|
|
|
|
RtlClearBits( &ldt_bitmap, sel >> 3, count );
|
|
|
|
while (count--)
|
|
|
|
{
|
|
|
|
ldt_set_entry( sel, null_entry );
|
|
|
|
sel += 8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* AllocSelectorArray (KERNEL.206)
|
|
|
|
*/
|
|
|
|
WORD WINAPI AllocSelectorArray16( WORD count )
|
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD i, sel = alloc_entries( count );
|
2000-11-14 02:54:49 +01:00
|
|
|
|
|
|
|
if (sel)
|
Release 971221
Fri Dec 19 10:50:46 1997 Douglas Ridgway <ridgway@winehq.com>
* [Make.rules.in] [Makefile.in] [documentation/Makefile.in]
[documentation/README.documentation]
First cut at Wine API documentation. No longer install reference
manual by default.
Wed Dec 17 21:32:23 1997 Andreas Mohr <100.30936@germany.net>
* [files/file.c]
Fixed GetTempFileName16() to use current path of requested drive
as needed.
* [if1632/Makefile.in] [if1632/builtin.c] [if1632/dciman32.spec]
[if1632/msvfw32.spec] [if1632/tapi32.spec] [if1632/wow32.spec]
Added misc DLLs needed by various apps.
Wed Dec 17 12:01:50 1997 Morten Eriksen <mortene@sim.no>
* [if1632/gdi32.spec] [include/windows.h] [objects/palette.c]
Inserted empty stub for CreateHalftonePalette.
Tue Dec 16 22:08:06 1997 Huw D M Davies <h.davies1@physics.oxford.ac.uk>
* [windows/mdi.c]
Use VK_TAB instead of VK_SEPARATOR in TranslateMDISysAccel().
* [graphics/metafiledrv/init.c]
DeleteDC() on a MetaDC doesn't do anything - it shouldn't. Therefore
fix cleanup of MetaDCs in CloseMetaFile(); they now actually get
removed from the GDI heap!
* [graphics/x11drv/xfont.c]
Preserve FO_MATCH_XYINDEP flag in XFONT_MatchFIList(). Should reduce
the number of bold-italic matches.
Tue Dec 16 20:11:43 1997 Bertho Stultiens <bertho@panter.soci.aau.dk>
* [graphics/painting.c]
Included an implementation of DrawState
* [if1632/thunk.c]
Changed many fprintfs into dprintf_thunk
* [include/cache.h] [graphics/cache.c]
New files to hold cached handles to regulary used GDI object.
* [include/windows.h]
Added DRAWSTATExx typedefs
Added DSS_DEFAULT define for DrawState
* [objects/text.c]
New implementation of GrayString()
* [controls/uitools.c]
Implemented DrawFrameControl() functions
Changed DrawEdge() behaviour to win95 implementation
Mon Dec 15 23:43:01 1997 Martin Boehme <boehme@informatik.mu-luebeck.de>
* [graphics/path.c] [include/path.h] [graphics/painting.c]
[if1632/gdi32.spec] [include/gdi.h] [include/windows.h]
[objects/dc.c]
Added preliminary support for GDI paths.
* [objects/dc.c]
Added DC_Init_DC_INFO function for initializing WIN_DC_INFO
structure.
* [include/windows.h] [include/gdi.h] [objects/gdiobj.c]
Added DEFAULT_GUI_FONT.
* [include/winerror.h]
Added a few error codes.
* [memory/heap.c]
Changed HeapAlloc to make the correct calls to SetLastError
(now conforms to NT's behaviour).
* [windows/win.c]
Changed WIN_CreateWindowEx to allow child windows with zero
width / height.
Sun Dec 14 12:01:07 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [if1632/*] [relay32/*]
Moved all 32-bit relay stuff to relay32/
* [fi1632/thunk.c] [win32/kernel32.c]
Moved all KERNEL32 ordinal functions to kernel32.c
* [memory/selector.c]
Initialize selectors in AllocSelectorArray.
* [tools/build.c]
Generate C instead of assembly for Win32 relays.
Fixed stack corruption in CallTo16 functions, found by Bertho
Stultiens.
Sun Dec 14 10:55:00 1997 Andreas Mohr <100.30936@germany.net>
* [if1632/Makefile.in] [if1632/builtin.c] [if1632/ole2thk.spec]
Added built-in OLE2THK.DLL.
* [if1632/toolhelp.spec] [include/toolhelp.h] [memory/selector.c]
[misc/toolhelp.c]
Added stubs for StackTraceFirst(), StackTraceCSIPFirst(),
StackTraceNext(), UTSelectorOffsetToLinear()
and UTLinearToSelectorOffset().
Sat Dec 13 17:26:41 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [misc/winsock.c]
32-bit API fixes for reported problems (thanks to Marcus
and David).
* [graphics/x11drv/xfont.c]
Little tweak in point size calculation.
* [windows/defwnd.c] [windows/dce.c] [windows/winhelp.c]
[windows/winproc.c] [windows/win.c]
Bug fixes.
Sat Dec 13 16:35:14 1997 Kai Morich <kai.morich@rhein-neckar.netsurf.de>
* [files/dos_fs.c]
OpenFile with empty filename and OF_PARSE returns current dir.
* [misc/commdlg.c]
Ignore initial dir if bogus.
* [files/file.c]
Locking an identic region in a file must not be an error.
* [misc/lstr.c]
Use wide char ctype functions.
Fri Dec 12 23:46:22 1997 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [file/drive.c]
First attempt for GetDiskFreeSpaceEx.
Fri Dec 12 23:18:41 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [loader/pe_resource.c]
Fixed wrongly appearing menus problem (only use default lookups in
last resource subtree).
* [multimedia/*.c]
Added win32 support for time* and joy* lowlevel drivers,
(not excessively tested), some misc fixes and cleanups.
* [misc/shellord.c][misc/shell.c][ole/folders.c][ole/ifs.c]
[include/interfaces.h][include/shlobj.h]
Added some more undocumented SHELL32 functions, some shell folder
interface stubs added, SHGetMalloc, SHGetDesktopFolder,
SHGetSpecialFolderLocation, SHGetPathFromIDList stubs added,
IMalloc, IUnknown implemented.
* [windows/msgbox.c]
Implemented MessageBoxIndirect*, some internal changes.
* [if1632/thunk.c]
KERNEL_431 implemented.
* [objects/gdiobj.c]
GetCurrentObject implemented.
Wed Dec 3 01:09:17 1997 Gordon Chaffee <chaffee@apu.cs.berkeley.edu>
* [objects/dib.c]
Fix a couple small DIB problems.
* [controls/edit.c]
Fix a typo.
* [files/dos_fs.c]
Try normal readdir in case fs is specified as vfat but isn't.
* [files/profile.c]
Implementation of WritePrivateProfileSection32A from Uwe Bonnes.
* [misc/printdrv.c]
OpenPrinter32A stub, helps Word97 start.
* [objects/text.c]
Fixup implementation of GetTextCharsetInfo.
* [scheduler/process.c]
Fix environment variable expansion.
* [win32/code_page.c]
Make MultiByteToWideChar and WideCharToMultiByte conform in return
values and error conditions to those in Windows NT 4.0.
* [windows/message.c]
Fix broadcasting problems in Win32. The Win32 docs say to use
HWND_TOPMOST to broadcast to all Win32 Windows.
* [memory/virtual.c] [loader/pe_image.c]
Do not map in VirtualAlloc if address is specified and space is
not available. This is required by Win32.
* [include/pen.h] [include/x11drv.h] [objects/dc.c]
[objects/pen.c] [graphics/x11drv/pen.c]
Support for ExtCreatePen.
Tue Dec 2 20:22:06 1997 Morten Welinder <terra@diku.dk>
* [*/*.c] [*/*.h]
Add lots of prototypes.
* [if1632/kernel32.spec][include/windows.h][include/winnt.h]
[misc/cpu.c]
Define IsProcessorFeaturePresent.
* [misc/crtdll.c]
(CRTDLL__getcwd): Allocate enough memory for the terminating zero.
* [misc/ver.c]
Improve check for null component in _find_data[AW]. Plug leaks
in VerQueryValue*.
* [win32/console.c][if1632/kernel32.spec]
Add stubs for GetConsoleCursorInfo32, SetConsoleCursorInfo32.
* [windows/message.c][if1632/user32.spec][include/windows.h]
Define SendMessageTimeout*.
* [graphics/x11drv/xfont.c]
Change algorithm of __genericCheckSum to be alignment safe.
* [misc/main.c] [misc/winsock.c] [misc/winsock_dns.c]
Include winsock.h early to avoid Solaris problem.
* [include/windows.h]
Undef FSHIFT before we define it.
* [rc/winerc.c]
Include <fcntl.h> instead of <sys/fcntl.h>.
* [files/file.c]
Use strerror in FILE_SetDosError if available.
* [include/config.h.in] [configure.in]
Check for strerror.
* [objects/gdiobj.c]
Make static font structures aligned.
Mon Dec 1 10:10:21 1997 Karl Garrison <karlos@eznet.net>
* [win32/console.c] [if1632/kernel32.spec] [include/windows.h]
Added stub for GetNumberOfConsoleMouseButtons.
Added stub for PeekConsoleInput(A,W).
Fixed parameter list for WriteConsole(A,W).
GetNumberOfConsoleInputEvents now returns 0 events instead of 1
(since low-level console functions are not yet supported).
GetConsoleMode no longer returns ENABLE_WINDOW_INPUT and
ENABLE_MOUSE_INPUT since these are not currently implemented.
1997-12-21 20:17:50 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
LDT_ENTRY entry = ldt_make_entry( 0, 1, LDT_FLAGS_DATA ); /* avoid 0 base and limit */
|
2020-04-01 22:55:24 +02:00
|
|
|
for (i = 0; i < count; i++) ldt_set_entry( sel + (i << 3), entry );
|
Release 971221
Fri Dec 19 10:50:46 1997 Douglas Ridgway <ridgway@winehq.com>
* [Make.rules.in] [Makefile.in] [documentation/Makefile.in]
[documentation/README.documentation]
First cut at Wine API documentation. No longer install reference
manual by default.
Wed Dec 17 21:32:23 1997 Andreas Mohr <100.30936@germany.net>
* [files/file.c]
Fixed GetTempFileName16() to use current path of requested drive
as needed.
* [if1632/Makefile.in] [if1632/builtin.c] [if1632/dciman32.spec]
[if1632/msvfw32.spec] [if1632/tapi32.spec] [if1632/wow32.spec]
Added misc DLLs needed by various apps.
Wed Dec 17 12:01:50 1997 Morten Eriksen <mortene@sim.no>
* [if1632/gdi32.spec] [include/windows.h] [objects/palette.c]
Inserted empty stub for CreateHalftonePalette.
Tue Dec 16 22:08:06 1997 Huw D M Davies <h.davies1@physics.oxford.ac.uk>
* [windows/mdi.c]
Use VK_TAB instead of VK_SEPARATOR in TranslateMDISysAccel().
* [graphics/metafiledrv/init.c]
DeleteDC() on a MetaDC doesn't do anything - it shouldn't. Therefore
fix cleanup of MetaDCs in CloseMetaFile(); they now actually get
removed from the GDI heap!
* [graphics/x11drv/xfont.c]
Preserve FO_MATCH_XYINDEP flag in XFONT_MatchFIList(). Should reduce
the number of bold-italic matches.
Tue Dec 16 20:11:43 1997 Bertho Stultiens <bertho@panter.soci.aau.dk>
* [graphics/painting.c]
Included an implementation of DrawState
* [if1632/thunk.c]
Changed many fprintfs into dprintf_thunk
* [include/cache.h] [graphics/cache.c]
New files to hold cached handles to regulary used GDI object.
* [include/windows.h]
Added DRAWSTATExx typedefs
Added DSS_DEFAULT define for DrawState
* [objects/text.c]
New implementation of GrayString()
* [controls/uitools.c]
Implemented DrawFrameControl() functions
Changed DrawEdge() behaviour to win95 implementation
Mon Dec 15 23:43:01 1997 Martin Boehme <boehme@informatik.mu-luebeck.de>
* [graphics/path.c] [include/path.h] [graphics/painting.c]
[if1632/gdi32.spec] [include/gdi.h] [include/windows.h]
[objects/dc.c]
Added preliminary support for GDI paths.
* [objects/dc.c]
Added DC_Init_DC_INFO function for initializing WIN_DC_INFO
structure.
* [include/windows.h] [include/gdi.h] [objects/gdiobj.c]
Added DEFAULT_GUI_FONT.
* [include/winerror.h]
Added a few error codes.
* [memory/heap.c]
Changed HeapAlloc to make the correct calls to SetLastError
(now conforms to NT's behaviour).
* [windows/win.c]
Changed WIN_CreateWindowEx to allow child windows with zero
width / height.
Sun Dec 14 12:01:07 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [if1632/*] [relay32/*]
Moved all 32-bit relay stuff to relay32/
* [fi1632/thunk.c] [win32/kernel32.c]
Moved all KERNEL32 ordinal functions to kernel32.c
* [memory/selector.c]
Initialize selectors in AllocSelectorArray.
* [tools/build.c]
Generate C instead of assembly for Win32 relays.
Fixed stack corruption in CallTo16 functions, found by Bertho
Stultiens.
Sun Dec 14 10:55:00 1997 Andreas Mohr <100.30936@germany.net>
* [if1632/Makefile.in] [if1632/builtin.c] [if1632/ole2thk.spec]
Added built-in OLE2THK.DLL.
* [if1632/toolhelp.spec] [include/toolhelp.h] [memory/selector.c]
[misc/toolhelp.c]
Added stubs for StackTraceFirst(), StackTraceCSIPFirst(),
StackTraceNext(), UTSelectorOffsetToLinear()
and UTLinearToSelectorOffset().
Sat Dec 13 17:26:41 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [misc/winsock.c]
32-bit API fixes for reported problems (thanks to Marcus
and David).
* [graphics/x11drv/xfont.c]
Little tweak in point size calculation.
* [windows/defwnd.c] [windows/dce.c] [windows/winhelp.c]
[windows/winproc.c] [windows/win.c]
Bug fixes.
Sat Dec 13 16:35:14 1997 Kai Morich <kai.morich@rhein-neckar.netsurf.de>
* [files/dos_fs.c]
OpenFile with empty filename and OF_PARSE returns current dir.
* [misc/commdlg.c]
Ignore initial dir if bogus.
* [files/file.c]
Locking an identic region in a file must not be an error.
* [misc/lstr.c]
Use wide char ctype functions.
Fri Dec 12 23:46:22 1997 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [file/drive.c]
First attempt for GetDiskFreeSpaceEx.
Fri Dec 12 23:18:41 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [loader/pe_resource.c]
Fixed wrongly appearing menus problem (only use default lookups in
last resource subtree).
* [multimedia/*.c]
Added win32 support for time* and joy* lowlevel drivers,
(not excessively tested), some misc fixes and cleanups.
* [misc/shellord.c][misc/shell.c][ole/folders.c][ole/ifs.c]
[include/interfaces.h][include/shlobj.h]
Added some more undocumented SHELL32 functions, some shell folder
interface stubs added, SHGetMalloc, SHGetDesktopFolder,
SHGetSpecialFolderLocation, SHGetPathFromIDList stubs added,
IMalloc, IUnknown implemented.
* [windows/msgbox.c]
Implemented MessageBoxIndirect*, some internal changes.
* [if1632/thunk.c]
KERNEL_431 implemented.
* [objects/gdiobj.c]
GetCurrentObject implemented.
Wed Dec 3 01:09:17 1997 Gordon Chaffee <chaffee@apu.cs.berkeley.edu>
* [objects/dib.c]
Fix a couple small DIB problems.
* [controls/edit.c]
Fix a typo.
* [files/dos_fs.c]
Try normal readdir in case fs is specified as vfat but isn't.
* [files/profile.c]
Implementation of WritePrivateProfileSection32A from Uwe Bonnes.
* [misc/printdrv.c]
OpenPrinter32A stub, helps Word97 start.
* [objects/text.c]
Fixup implementation of GetTextCharsetInfo.
* [scheduler/process.c]
Fix environment variable expansion.
* [win32/code_page.c]
Make MultiByteToWideChar and WideCharToMultiByte conform in return
values and error conditions to those in Windows NT 4.0.
* [windows/message.c]
Fix broadcasting problems in Win32. The Win32 docs say to use
HWND_TOPMOST to broadcast to all Win32 Windows.
* [memory/virtual.c] [loader/pe_image.c]
Do not map in VirtualAlloc if address is specified and space is
not available. This is required by Win32.
* [include/pen.h] [include/x11drv.h] [objects/dc.c]
[objects/pen.c] [graphics/x11drv/pen.c]
Support for ExtCreatePen.
Tue Dec 2 20:22:06 1997 Morten Welinder <terra@diku.dk>
* [*/*.c] [*/*.h]
Add lots of prototypes.
* [if1632/kernel32.spec][include/windows.h][include/winnt.h]
[misc/cpu.c]
Define IsProcessorFeaturePresent.
* [misc/crtdll.c]
(CRTDLL__getcwd): Allocate enough memory for the terminating zero.
* [misc/ver.c]
Improve check for null component in _find_data[AW]. Plug leaks
in VerQueryValue*.
* [win32/console.c][if1632/kernel32.spec]
Add stubs for GetConsoleCursorInfo32, SetConsoleCursorInfo32.
* [windows/message.c][if1632/user32.spec][include/windows.h]
Define SendMessageTimeout*.
* [graphics/x11drv/xfont.c]
Change algorithm of __genericCheckSum to be alignment safe.
* [misc/main.c] [misc/winsock.c] [misc/winsock_dns.c]
Include winsock.h early to avoid Solaris problem.
* [include/windows.h]
Undef FSHIFT before we define it.
* [rc/winerc.c]
Include <fcntl.h> instead of <sys/fcntl.h>.
* [files/file.c]
Use strerror in FILE_SetDosError if available.
* [include/config.h.in] [configure.in]
Check for strerror.
* [objects/gdiobj.c]
Make static font structures aligned.
Mon Dec 1 10:10:21 1997 Karl Garrison <karlos@eznet.net>
* [win32/console.c] [if1632/kernel32.spec] [include/windows.h]
Added stub for GetNumberOfConsoleMouseButtons.
Added stub for PeekConsoleInput(A,W).
Fixed parameter list for WriteConsole(A,W).
GetNumberOfConsoleInputEvents now returns 0 events instead of 1
(since low-level console functions are not yet supported).
GetConsoleMode no longer returns ENABLE_WINDOW_INPUT and
ENABLE_MOUSE_INPUT since these are not currently implemented.
1997-12-21 20:17:50 +01:00
|
|
|
}
|
2000-11-14 02:54:49 +01:00
|
|
|
return sel;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* AllocSelector (KERNEL.175)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI AllocSelector16( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
|
|
|
WORD newsel, count, i;
|
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
count = sel ? get_sel_count(sel) : 1;
|
2020-04-01 22:55:24 +02:00
|
|
|
newsel = alloc_entries( count );
|
2000-11-14 02:54:49 +01:00
|
|
|
TRACE("(%04x): returning %04x\n", sel, newsel );
|
1995-03-19 18:39:39 +01:00
|
|
|
if (!newsel) return 0;
|
|
|
|
if (!sel) return newsel; /* nothing to copy */
|
|
|
|
for (i = 0; i < count; i++)
|
|
|
|
{
|
2000-11-14 02:54:49 +01:00
|
|
|
LDT_ENTRY entry;
|
2020-04-01 22:55:24 +02:00
|
|
|
if (!ldt_get_entry( sel + (i << 3), &entry )) break;
|
|
|
|
ldt_set_entry( newsel + (i << 3), entry );
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
return newsel;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* FreeSelector (KERNEL.176)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI FreeSelector16( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD idx = sel >> 3;
|
2000-11-14 02:54:49 +01:00
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
if (idx < first_ldt_entry) return sel; /* error */
|
|
|
|
if (!RtlAreBitsSet( &ldt_bitmap, idx, 1 )) return sel; /* error */
|
|
|
|
free_entries( sel, 1 );
|
1995-03-19 18:39:39 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* SELECTOR_SetEntries
|
|
|
|
*
|
|
|
|
* Set the LDT entries for an array of selectors.
|
|
|
|
*/
|
2020-04-01 22:55:24 +02:00
|
|
|
static void SELECTOR_SetEntries( WORD sel, const void *base, DWORD size, unsigned char flags )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD i, count = (size + 0xffff) / 0x10000;
|
1995-03-19 18:39:39 +01:00
|
|
|
|
|
|
|
for (i = 0; i < count; i++)
|
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
ldt_set_entry( sel + (i << 3), ldt_make_entry( base, size - 1, flags ));
|
2020-04-01 22:55:24 +02:00
|
|
|
base = (const char *)base + 0x10000;
|
|
|
|
size -= 0x10000; /* yep, Windows sets limit like that, not 64K sel units */
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* SELECTOR_AllocBlock
|
|
|
|
*
|
|
|
|
* Allocate selectors for a block of linear memory.
|
|
|
|
*/
|
2000-11-14 02:54:49 +01:00
|
|
|
WORD SELECTOR_AllocBlock( const void *base, DWORD size, unsigned char flags )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
|
|
|
WORD sel, count;
|
|
|
|
|
|
|
|
if (!size) return 0;
|
|
|
|
count = (size + 0xffff) / 0x10000;
|
2020-04-01 22:55:24 +02:00
|
|
|
if ((sel = alloc_entries( count ))) SELECTOR_SetEntries( sel, base, size, flags );
|
1995-03-19 18:39:39 +01:00
|
|
|
return sel;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-08-11 17:49:51 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* SELECTOR_FreeBlock
|
|
|
|
*
|
|
|
|
* Free a block of selectors.
|
|
|
|
*/
|
2000-11-14 02:54:49 +01:00
|
|
|
void SELECTOR_FreeBlock( WORD sel )
|
1996-08-11 17:49:51 +02:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD idx = sel >> 3, count = get_sel_count( sel );
|
1996-08-11 17:49:51 +02:00
|
|
|
|
1999-05-23 12:25:25 +02:00
|
|
|
TRACE("(%04x,%d)\n", sel, count );
|
2020-04-01 22:55:24 +02:00
|
|
|
|
|
|
|
if (idx < first_ldt_entry) return; /* error */
|
|
|
|
if (!RtlAreBitsSet( &ldt_bitmap, idx, count )) return; /* error */
|
|
|
|
free_entries( sel, count );
|
1996-08-11 17:49:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1995-03-19 18:39:39 +01:00
|
|
|
/***********************************************************************
|
|
|
|
* SELECTOR_ReallocBlock
|
|
|
|
*
|
|
|
|
* Change the size of a block of selectors.
|
|
|
|
*/
|
1999-04-11 17:07:13 +02:00
|
|
|
WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2003-02-26 21:34:45 +01:00
|
|
|
int oldcount, newcount;
|
2020-04-01 22:56:30 +02:00
|
|
|
BYTE flags;
|
1995-03-19 18:39:39 +01:00
|
|
|
|
Release 950727
Sat Jul 22 22:39:09 IDT 1995 Michael Veksler <e1678223@tochnapc2.technion.ac.il>
* [ipc/*]
New directory. This directory contains the new inter-wine
communications support. It enables DDE protocols between two wine
instances. Currently it is limited to DDE, but can be enhanced to
support OLE between 2 different wine instances. This is very
important for libwine.a DDE/OLE support.
* [tools/ipcl]
A script to delete garbage IPC handles (shared memory, semaphores
and message queues). The current inter-wine communication is not
perfect, and sometimes leaves garbage behind.
* [if1632/relay.c] [include/atom.h] [include/global.h]
[loader/selector.c] [loader/task.c] [loader/module.c]
[loader/signal.c] [memory/global.c] [misc/atom.c]
[windows/class.c] [windows/message.c] [windows/win.c]
[Imakefile]
Hooks for inter-wine DDE support, current Global.*Atom functions
renamed to Local.*Atom since Global.*Atom are used for Inter-Wine
DDE communication. (The first call to these functions sets up the
IPC structures - which otherwise cause unneeded overhead.
Mon Jul 17 19:55:21 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [controls/menu.c]
Don't crash if a NULL string is passed to menu functions.
* [memory/selector.c]
We now use a bit in ldt_flags_copy to indicate free LDT entries.
Fixed a bug in SELECTOR_ReallocBlock that could cause it to
overwrite valid LDT entries when growing a block.
* [miscemu/instr.c]
Emulate int xx instruction by storing the interrupt vector in
CS:IP and returning directly. This allows a program to install an
interrupt vector.
* [windows/win.c]
Added function WIN_GetTopParent to get the top-level parent of a
window.
Sun Jul 16 18:17:17 1995 Gregory Trubetskoy <grisha@mira.com>
* [loader/resource.c]
Added LoadIconHandler. It doesn't do anything yet, but now you
can use borland help files with winhelp.exe.
Sun Jul 16 11:58:45 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c]
Fixed to return 386 Enhanced mode correctly. Also return the same
type of CPU, for both Enhanced and Standard mode, namely a 386.
Sun Jul 16 00:02:04 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [Configure] [include/options.h] [include/wineopts.h]
[misc/main.c][misc/spy.c]
Removed support of spy file. Redirected spy messages to stddeb.
Removed -spy option. Added -debugmsg +spy option.
* [debugger/dbg.y][debugger/debug.l]
Enabled segmented addresses (seg:offs) for break and x commands.
* [if1632/gdi.spec] [objects/region.c] [windows/graphics.c]
[include/region.h]
FrameRgn, REGION_FrameRgn: New functions
* [if1632/kernel.spec]
IsWinOldApTask: Return false
* [if1632/mouse.spec]
CplApplet: Removed
* [if1632/user.spec] [windows/win.c]
ShowOwnedPopups: New function
* [if1632/winsock.spec] [misc/winsocket.c]
inet_addr, select: New prototypes in relay code
Fixed memory layout for netdb functions (getXbyY).
WINSOCK_ioctlsocket: Translated FIONREAD, FIONBIO, and FIOASYNC
* [objects/clipping.c]
RectVisible: Fixed call to LPToDP
* [rc/winerc.c]
main: Removed extra argument to getopt for Linux.
Tue Jul 11 00:14:41 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
Yet another fix for ListBoxDirectory().
* [loader/module.c] [if1632/kernel.spec]
Make GetModuleHandle() accept instance handles as parameter.
* [if1632/relay.c] [loader/task.c]
Put a magic cookie at the bottom of the 32 bit stack, and check on
each return from a 32 bit function whether it's still there. Complain
if it's not.
* [if1632/user.spec]
Wrong entry for CloseDriver().
* [misc/dos_fs.c] [loader/task.c] [include/dos_fs.h] [misc/file.c]
[miscemu/int21.c]
Large parts of dos_fs.c simplified. Changed it to use one
current drive/directory per task, which is set to the module path on
task creation.
Prevent CorelPaint from closing stdin.
open() with O_CREAT set must be passed three parameters.
DOS FindFirst()/FindNext() could crash when FA_LABEL was set. Fixed,
it's in DOS_readdir() now.
* [misc/profile.c]
Some badly written software (Lotus Freelance Graphics) passes a bogus
size parameter that caused Wine to write off the end of a segment.
Fixed. (It's probably too paranoid now.)
* [multimedia/mmsystem.c] [multimedia/time.c] [multimedia/joystick.c]
[multimedia/Imakefile] [if1632/winprocs.spec]
16 bit entry point for MMSysTimeCallback.
Split off time.c and joystick.c from mmsystem.c.
* [objects/dib.c]
GetDIBits(): call XGetImage() via CallTo32_LargeStack.
* [windows/cursor.c]
DestroyCursor(): do nothing for builtin cursors.
* [windows/mdi.c]
Half of WM_MDISETMENU implemented.
* [windows/win.c]
EnumWindows() and EnumTaskWindows() never enumerated any windows.
Fixed.
* [windows/*.c]
Fixed GetParent() to return correct values for owned windows.
* [windows/message.c]
Don't try to activate disabled top-level windows.
* [windows/nonclient.c]
Work around a bug in gcc-2.7.0.
* [tools/build.c] [include/stackframe.h] [memory/global.c]
[loader/task.c] [memory/selector.c]
Some Visual Basic programs (and possibly others, too) expect ES to be
preserved by a call to an API function, so we have to save it.
In GlobalFree() and FreeSelector(), we must clear CURRENT_STACK16->es
to prevent segfaults if ES contained the selector to be freed.
Sun Jul 9 20:21:20 1995 Jon Tombs <jon@gtex02.us.es>
* [*/*]
Added missing prototypes to header files and relevant includes
to reduce compile time warnings.
Sun Jul 9 18:32:56 1995 Michael Patra <micky@marie.physik.tu-berlin.de>
* [configure.in] [include/config.h] [*/Makefile.in]
New configuration scheme based on autoconf.
Sat Jul 8 14:12:45 1995 Morten Welinder <terra+@cs.cmu.edu>
* [miscemu/ioports.c]
Revamp to have only one in- and one out- variant, both really
implemented.
* [miscemu/instr.c]
INSTR_EmulateInstruction: Use new ioport interface. Implement
string io. Correct instruction pointer for 32-bit code.
* [include/miscemu.h]
Update port function prototypes.
* [include/registers.h]
Defined FS and GS.
Sat Jul 8 13:38:54 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
ChopOffSlash(): A path consisting off a single slash is left
intact, and multiple slashes are all removed.
1995-07-29 15:09:43 +02:00
|
|
|
if (!size) size = 1;
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return sel;
|
|
|
|
flags = ldt_get_flags( sel );
|
|
|
|
oldcount = (ldt_get_limit( sel ) >> 16) + 1;
|
2003-02-26 21:34:45 +01:00
|
|
|
newcount = (size + 0xffff) >> 16;
|
Release 950727
Sat Jul 22 22:39:09 IDT 1995 Michael Veksler <e1678223@tochnapc2.technion.ac.il>
* [ipc/*]
New directory. This directory contains the new inter-wine
communications support. It enables DDE protocols between two wine
instances. Currently it is limited to DDE, but can be enhanced to
support OLE between 2 different wine instances. This is very
important for libwine.a DDE/OLE support.
* [tools/ipcl]
A script to delete garbage IPC handles (shared memory, semaphores
and message queues). The current inter-wine communication is not
perfect, and sometimes leaves garbage behind.
* [if1632/relay.c] [include/atom.h] [include/global.h]
[loader/selector.c] [loader/task.c] [loader/module.c]
[loader/signal.c] [memory/global.c] [misc/atom.c]
[windows/class.c] [windows/message.c] [windows/win.c]
[Imakefile]
Hooks for inter-wine DDE support, current Global.*Atom functions
renamed to Local.*Atom since Global.*Atom are used for Inter-Wine
DDE communication. (The first call to these functions sets up the
IPC structures - which otherwise cause unneeded overhead.
Mon Jul 17 19:55:21 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [controls/menu.c]
Don't crash if a NULL string is passed to menu functions.
* [memory/selector.c]
We now use a bit in ldt_flags_copy to indicate free LDT entries.
Fixed a bug in SELECTOR_ReallocBlock that could cause it to
overwrite valid LDT entries when growing a block.
* [miscemu/instr.c]
Emulate int xx instruction by storing the interrupt vector in
CS:IP and returning directly. This allows a program to install an
interrupt vector.
* [windows/win.c]
Added function WIN_GetTopParent to get the top-level parent of a
window.
Sun Jul 16 18:17:17 1995 Gregory Trubetskoy <grisha@mira.com>
* [loader/resource.c]
Added LoadIconHandler. It doesn't do anything yet, but now you
can use borland help files with winhelp.exe.
Sun Jul 16 11:58:45 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c]
Fixed to return 386 Enhanced mode correctly. Also return the same
type of CPU, for both Enhanced and Standard mode, namely a 386.
Sun Jul 16 00:02:04 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [Configure] [include/options.h] [include/wineopts.h]
[misc/main.c][misc/spy.c]
Removed support of spy file. Redirected spy messages to stddeb.
Removed -spy option. Added -debugmsg +spy option.
* [debugger/dbg.y][debugger/debug.l]
Enabled segmented addresses (seg:offs) for break and x commands.
* [if1632/gdi.spec] [objects/region.c] [windows/graphics.c]
[include/region.h]
FrameRgn, REGION_FrameRgn: New functions
* [if1632/kernel.spec]
IsWinOldApTask: Return false
* [if1632/mouse.spec]
CplApplet: Removed
* [if1632/user.spec] [windows/win.c]
ShowOwnedPopups: New function
* [if1632/winsock.spec] [misc/winsocket.c]
inet_addr, select: New prototypes in relay code
Fixed memory layout for netdb functions (getXbyY).
WINSOCK_ioctlsocket: Translated FIONREAD, FIONBIO, and FIOASYNC
* [objects/clipping.c]
RectVisible: Fixed call to LPToDP
* [rc/winerc.c]
main: Removed extra argument to getopt for Linux.
Tue Jul 11 00:14:41 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
Yet another fix for ListBoxDirectory().
* [loader/module.c] [if1632/kernel.spec]
Make GetModuleHandle() accept instance handles as parameter.
* [if1632/relay.c] [loader/task.c]
Put a magic cookie at the bottom of the 32 bit stack, and check on
each return from a 32 bit function whether it's still there. Complain
if it's not.
* [if1632/user.spec]
Wrong entry for CloseDriver().
* [misc/dos_fs.c] [loader/task.c] [include/dos_fs.h] [misc/file.c]
[miscemu/int21.c]
Large parts of dos_fs.c simplified. Changed it to use one
current drive/directory per task, which is set to the module path on
task creation.
Prevent CorelPaint from closing stdin.
open() with O_CREAT set must be passed three parameters.
DOS FindFirst()/FindNext() could crash when FA_LABEL was set. Fixed,
it's in DOS_readdir() now.
* [misc/profile.c]
Some badly written software (Lotus Freelance Graphics) passes a bogus
size parameter that caused Wine to write off the end of a segment.
Fixed. (It's probably too paranoid now.)
* [multimedia/mmsystem.c] [multimedia/time.c] [multimedia/joystick.c]
[multimedia/Imakefile] [if1632/winprocs.spec]
16 bit entry point for MMSysTimeCallback.
Split off time.c and joystick.c from mmsystem.c.
* [objects/dib.c]
GetDIBits(): call XGetImage() via CallTo32_LargeStack.
* [windows/cursor.c]
DestroyCursor(): do nothing for builtin cursors.
* [windows/mdi.c]
Half of WM_MDISETMENU implemented.
* [windows/win.c]
EnumWindows() and EnumTaskWindows() never enumerated any windows.
Fixed.
* [windows/*.c]
Fixed GetParent() to return correct values for owned windows.
* [windows/message.c]
Don't try to activate disabled top-level windows.
* [windows/nonclient.c]
Work around a bug in gcc-2.7.0.
* [tools/build.c] [include/stackframe.h] [memory/global.c]
[loader/task.c] [memory/selector.c]
Some Visual Basic programs (and possibly others, too) expect ES to be
preserved by a call to an API function, so we have to save it.
In GlobalFree() and FreeSelector(), we must clear CURRENT_STACK16->es
to prevent segfaults if ES contained the selector to be freed.
Sun Jul 9 20:21:20 1995 Jon Tombs <jon@gtex02.us.es>
* [*/*]
Added missing prototypes to header files and relevant includes
to reduce compile time warnings.
Sun Jul 9 18:32:56 1995 Michael Patra <micky@marie.physik.tu-berlin.de>
* [configure.in] [include/config.h] [*/Makefile.in]
New configuration scheme based on autoconf.
Sat Jul 8 14:12:45 1995 Morten Welinder <terra+@cs.cmu.edu>
* [miscemu/ioports.c]
Revamp to have only one in- and one out- variant, both really
implemented.
* [miscemu/instr.c]
INSTR_EmulateInstruction: Use new ioport interface. Implement
string io. Correct instruction pointer for 32-bit code.
* [include/miscemu.h]
Update port function prototypes.
* [include/registers.h]
Defined FS and GS.
Sat Jul 8 13:38:54 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
ChopOffSlash(): A path consisting off a single slash is left
intact, and multiple slashes are all removed.
1995-07-29 15:09:43 +02:00
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
if (oldcount < newcount) /* we need to add selectors */
|
|
|
|
{
|
|
|
|
ULONG idx = sel >> 3;
|
|
|
|
|
|
|
|
if (RtlAreBitsClear( &ldt_bitmap, idx + oldcount, newcount - oldcount ))
|
|
|
|
{
|
|
|
|
RtlSetBits( &ldt_bitmap, idx + oldcount, newcount - oldcount );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
free_entries( sel, oldcount );
|
|
|
|
sel = alloc_entries( newcount );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (oldcount > newcount)
|
|
|
|
{
|
|
|
|
free_entries( sel + (newcount << 3), oldcount - newcount );
|
|
|
|
}
|
2020-04-01 22:56:30 +02:00
|
|
|
if (sel) SELECTOR_SetEntries( sel, base, size, flags );
|
1995-03-19 18:39:39 +01:00
|
|
|
return sel;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* PrestoChangoSelector (KERNEL.177)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI PrestoChangoSelector16( WORD selSrc, WORD selDst )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( selSrc )) return selDst;
|
2000-11-14 02:54:49 +01:00
|
|
|
/* toggle the executable bit */
|
2020-04-01 22:56:30 +02:00
|
|
|
ldt_set_entry( selDst, ldt_make_entry( ldt_get_base( selSrc ), ldt_get_limit( selSrc ),
|
|
|
|
ldt_get_flags( selSrc ) ^ (LDT_FLAGS_CODE ^ LDT_FLAGS_DATA) ));
|
1995-03-19 18:39:39 +01:00
|
|
|
return selDst;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-21 01:03:14 +02:00
|
|
|
* AllocCStoDSAlias (KERNEL.170)
|
2001-07-11 20:56:41 +02:00
|
|
|
* AllocAlias (KERNEL.172)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI AllocCStoDSAlias16( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
|
|
|
WORD newsel;
|
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return 0;
|
2020-04-01 22:55:24 +02:00
|
|
|
newsel = AllocSelector16( 0 );
|
|
|
|
TRACE("(%04x): returning %04x\n", sel, newsel );
|
1995-03-19 18:39:39 +01:00
|
|
|
if (!newsel) return 0;
|
2020-04-01 22:56:30 +02:00
|
|
|
ldt_set_entry( newsel, ldt_make_entry( ldt_get_base(sel), ldt_get_limit(sel), LDT_FLAGS_DATA ));
|
2020-04-01 22:55:24 +02:00
|
|
|
return newsel;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* AllocDStoCSAlias (KERNEL.171)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI AllocDStoCSAlias16( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
|
|
|
WORD newsel;
|
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return 0;
|
2020-04-01 22:55:24 +02:00
|
|
|
newsel = AllocSelector16( 0 );
|
|
|
|
TRACE("(%04x): returning %04x\n", sel, newsel );
|
1995-03-19 18:39:39 +01:00
|
|
|
if (!newsel) return 0;
|
2020-04-01 22:56:30 +02:00
|
|
|
ldt_set_entry( newsel, ldt_make_entry( ldt_get_base(sel), ldt_get_limit(sel), LDT_FLAGS_CODE ));
|
2020-04-01 22:55:24 +02:00
|
|
|
return newsel;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* LongPtrAdd (KERNEL.180)
|
|
|
|
*/
|
2020-04-01 22:56:30 +02:00
|
|
|
void WINAPI LongPtrAdd16( SEGPTR ptr, DWORD add )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
WORD sel = SELECTOROF( ptr );
|
2020-04-01 22:55:24 +02:00
|
|
|
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return;
|
|
|
|
ldt_set_entry( sel, ldt_make_entry( (char *)ldt_get_base( sel ) + add,
|
|
|
|
ldt_get_limit( sel ), ldt_get_flags( sel )));
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2002-11-20 20:40:12 +01:00
|
|
|
* GetSelectorBase (KERNEL.186)
|
2002-09-24 20:29:39 +02:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
DWORD WINAPI GetSelectorBase( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
Release 960728
Sun Jul 28 17:57:19 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [loader/task.c] [include/task.h]
Implemented SwitchStackTo()/SwitchStackBack().
* [include/wintypes.h] [loader/main.c]
Added __winelib variable to distinguish between emulator and
library at run-time. Later on, this should avoid some
recompilations when building Winelib.
* [windows/property.c]
Implemented Win32 functions for window properties.
Fri Jul 26 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [controls/listbox.c]
Implemented LBS_SORT style, WM_COMPAREITEM, and WM_DELETEITEM
messages.
* [controls/menu.c]
Call TranslateMessage() to enable shortcuts (on WM_CHAR).
* [include/cursoricon.h]
Moved #pragma pack(1) back to where it belongs.
* [objects/palette.c]
RealizeDefaultPalette() maps to system colors only.
Do not broadcast palette notifications when in TrueColor.
* [objects/color.c] [include/palette.h]
Miscellaneous optimizations. Had to fix several
"improvements" made to my patch for previous release.
* [objects/dib.c]
Reverse dib bits order for 24-bit SetDIBits().
* [objects/dc.c]
GetDeviceCaps() does not return RC_PALETTE when in TrueColor.
* [windows/scroll.c]
Scroll update region too.
* [windows/message.c]
Include QS_MOUSE into the event mask for nonclient mouse
message filter. Fixes problems with Word 6 freezing when
mouse hits nonclient area.
* [windows/win.c]
Allow top-level windows to be linked as HWND_TOP in CreateWindow().
* [windows/winpos.c] [windows/mdi.c]
Attempt to fix control menu duplication.
Fri Jul 26 09:49:35 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/drive.c]
GetDriveType32A(): return value for CDROM fixed.
* [files/file.c]
SearchPath* added.
* [if1632/gdi32.spec] [objects/brush.c]
SetBrushOrgEx() added.
* [loader/pe_resource.c]
If even loading the default entry fails, we just use the first
entry from the resource directory.
[loader/task.c]
SetSigHandler() stub added, Paradox 4.5 now starts up.
* [misc/comm.c] [include/windows.h] [if1632/kernel32.spec]
COMM functions updated to win32, not complete.
* [misc/lstr.c]
FormatMessageA partially implemented.
* [include/miscemu.h] [memory/selector.c]
[memory/global.c] [miscemu/dosmem.c]
DOS memory handling changed: 1MB preallocated block, real-mode
segment handling possible, SetSelectorBase into lower physical 1MB
possible.
* [miscemu/dpmi.c]
Real-mode segments changed, real-mode int 21,ax=6506 added.
AX=0x0303 added.
* [multimedia/time.c]
Fixed bug in killTimer.
* [objects/bitmap.c]
LoadImageA partially implemented.
Wed Jul 24 18:20:24 1996 Albrecht Kleine <kleine@ak.sax.de>
* [include/dde_mem.h][include/dde_proc.h]
[ipc/dde_atom.c][ipc/dde_proc.c][windows/message.c]
[ipc/generic_hash.h][library/miscstubs.c]
Changes for error free compilation using "--with-ipc":
replaced some names with *16-equivalent (e.g. MSG to MSG16),
modified prototype of function DDE_GlobalFree() .
* [objects/palette.c]
Added check for metafile-DC in GDISelectPalette(),
GDIRealizePalette(),RealizeDefaultPalette() and
IsDCCurrentPalette().
Tue Jul 23 22:46:53 1996 Andrew Lewycky <plewycky@oise.utoronto.ca>
* [controls/edit.c]
EDIT_WM_Create: Don't EDIT_EM_ReplaceSel if created with lParam = "",
fixes Winhelp.
* [windows/dialog.c]
DIALOG_CreateIndirect: Initialise dlgProc before creating children.
1996-07-28 20:50:11 +02:00
|
|
|
/* if base points into DOSMEM, assume we have to
|
1997-02-15 15:29:56 +01:00
|
|
|
* return pointer into physical lower 1MB */
|
2020-04-01 22:56:30 +02:00
|
|
|
return DOSMEM_MapLinearToDos( ldt_get_base( sel ));
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2002-11-20 20:40:12 +01:00
|
|
|
* SetSelectorBase (KERNEL.187)
|
2002-09-24 20:29:39 +02:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
WORD WINAPI SetSelectorBase( WORD sel, DWORD base )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return 0;
|
|
|
|
ldt_set_entry( sel, ldt_make_entry( DOSMEM_MapDosToLinear(base),
|
|
|
|
ldt_get_limit( sel ), ldt_get_flags( sel )));
|
1995-03-19 18:39:39 +01:00
|
|
|
return sel;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* GetSelectorLimit (KERNEL.188)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
DWORD WINAPI GetSelectorLimit16( WORD sel )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
return ldt_get_limit( sel );
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* SetSelectorLimit (KERNEL.189)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI SetSelectorLimit16( WORD sel, DWORD limit )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!ldt_is_valid( sel )) return 0;
|
|
|
|
ldt_set_entry( sel, ldt_make_entry( ldt_get_base( sel ), limit, ldt_get_flags( sel )));
|
1995-03-19 18:39:39 +01:00
|
|
|
return sel;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* SelectorAccessRights (KERNEL.196)
|
|
|
|
*/
|
1999-02-26 12:11:13 +01:00
|
|
|
WORD WINAPI SelectorAccessRights16( WORD sel, WORD op, WORD val )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2000-11-14 02:54:49 +01:00
|
|
|
LDT_ENTRY entry;
|
|
|
|
|
2020-04-01 22:55:24 +02:00
|
|
|
if (!ldt_get_entry( sel, &entry )) return 0;
|
1995-03-19 18:39:39 +01:00
|
|
|
if (op == 0) /* get */
|
|
|
|
{
|
2011-05-10 16:48:06 +02:00
|
|
|
return entry.HighWord.Bytes.Flags1 | ((entry.HighWord.Bytes.Flags2 & 0xf0) << 8);
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
else /* set */
|
|
|
|
{
|
2000-11-14 02:54:49 +01:00
|
|
|
entry.HighWord.Bytes.Flags1 = LOBYTE(val) | 0xf0;
|
|
|
|
entry.HighWord.Bytes.Flags2 = (entry.HighWord.Bytes.Flags2 & 0x0f) | (HIBYTE(val) & 0xf0);
|
2020-04-01 22:55:24 +02:00
|
|
|
ldt_set_entry( sel, entry );
|
1995-03-19 18:39:39 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadCodePtr (KERNEL.336)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
2020-04-01 22:55:24 +02:00
|
|
|
BOOL16 WINAPI IsBadCodePtr16( SEGPTR ptr )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD sel = SELECTOROF( ptr );
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
/* check for code segment, ignoring conforming, read-only and accessed bits */
|
2020-04-01 22:56:30 +02:00
|
|
|
if ((ldt_get_flags( sel ) ^ LDT_FLAGS_CODE) & 0x18) return TRUE;
|
|
|
|
if (OFFSETOF(ptr) > ldt_get_limit( sel )) return TRUE;
|
Release 950620
Mon Jun 19 20:29:50 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [debugger/*.c]
Modified debugger to use segmented pointers everywhere.
* [if1632/shell.spec] [if1632/sound.spec] [if1632/user.spec]
Declared all functions that return only 16-bit as 'pascal16'.
* [include/ldt.h] [memory/ldt.c]
Export LDT_EntryToBytes (new) and LDT_BytesToEntry for DPMI.
Maintain a copy of the selector flags, removing the need to make a
system call to retrieve an LDT entry.
* [loader/module.c]
Fixed bug with module file handle cache.
* [loader/ne_resource.c]
Fixed file name bug in NE_AccessResource().
* [loader/resource.c]
Fixed bug in LoadIcon() that caused wrong colors to be used for
the icon mask.
* [loader/signal.c]
Moved instruction emulation to miscemu/instr.c.
* [misc/dos_fs.c] [miscemu/int21.c]
Lots of small fixes, thanks to Morten Welinder.
* [miscemu/dpmi.c]
More complete DPMI emulation.
* [miscemu/instr.c]
Added support for prefixes in instructions to emulate.
* [miscemu/int2f.c]
Use register macros instead of destroying the high part of 32-bit
registers.
* [objects/dc.c]
Fixed bug in GetDCState() that failed to clear the new DC.
* [rc/sysres.rc]
Removed dialogs 11 and 12 that were never used.
* [tools/build.c]
'pascal16' generated functions did not save %dx.
Removed use of %fs to access the stack.
%ds is no longer initialized before calling a 16-bit routine.
* [windows/defwnd.c]
Accept a NULL pointer as window title.
* [windows/mdi.c]
MDICascade: skip iconic windows.
Implemented CalcChildScroll().
* [windows/utility.c]
Fixed MulDiv() for illegal values.
* [windows/win.c]
Fixed X error in CreateWindowEx() when WM_NCCALCSIZE returned
a zero width or height.
Sun Jun 18 22:22:30 MET DST 1995 Fons Botman (botman@inter.nl.net)
* [controls/edit.c]
Fixed "uninitalized" message which -Wall couldnt see to be ok
in EDIT_WriteText.
* [include/debug.h]
Added define for extra checks in API definitions during debugging.
* [loader/ne_image.c]
Added newline in NE_FixupPrologs to avoid long lines.
* [misc/dos_fs.c]
Added extra safety check in DOS_ValidDrive.
* [misc/exec.c]
Fixed definition of ExitWindows.
Sun Jun 18 21:16:08 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Some fixes, mostly for memory management, but also for text selection
and tab postitions. General cleanup. Notepad.exe now works.
* [controls/combo.c]
Fix: the hwnd field of the DRAWITEMSTRUCT should always be that of
the combo box, not the ComboLBox that belongs to it.
* [controls/listbox.c]
Handle itemID field correctly throughout.
* [memory/local.c]
Implemented flag LMEM_ZEROINIT.
LocalReAlloc() could trash the heap. Fixed.
* [objects/font.c]
FONT_MatchFont(): don't get confused by negative widths.
Fixed a segfault in EnumFonts().
* [objects/text.c]
DrawText(): DT_CALCRECT implies DT_NOCLIP.
* [objects/dcvalues.c]
MAKELONG was used with bad parameters in DC_GET_X_Y.
* [windows/dialog.c]
Don't show the dialog if WS_VISIBLE isn't set in the template.
* [windows/utility.c]
UTILITY_convertArgs(): Never pass an expression containing ++ into a
macro...
* [windows/win.c]
SetParent() should unlink the window before changing the parent.
* [windows/message.c]
Don't call timer functions via CallWindowProc(), since it checks
whether hwnd==0 and does not call the function in that case.
* [miscemu/instr.c]
Ignore interrupt 0x3D, for VBRUN300.DLL.
* [misc/commdlg.c]
Don't rely on the itemData field of the DRAWITEMSTRUCT to contain a
pointer to the item text.
* [if1632/relay.c]
Disable OLE and DDEML DLLs by default, since they contain nothing but
stubs anyway. SHELL, COMMDLG and WIN87EM are left enabled, although
some programs may work better without them.
* [multimedia/*.c] [include/multimedia.h] [include/driver.h]
Begun cleaning things up a little. Replaced printfs with dprintf_
macros, made functions static where possible, and some other minor
changes.
Sun Jun 11 23:19:10 1995 Martin von Loewis <martin@informatik.hu-berlin.de>
* [debugger/dbg.y][debugger/dbg.l]
Removed special handling for FILE_IDENTIFER, because it caused
problems with x/<format> statements.
* [debugger/info.c]
Use SC_ESP instead of SC_EIP for stack dump.
* [misc/compobj.c][if1632/compobj.spec]
CoBuildVersion, CoInitialize, CoUninitialize: new functions
* [misc/ole2.c][if1632/ole2.spec][misc/Imakefile][include/ole2.h]
New files ole2.c, ole2.h
OleBuildVersion, OleInitialize, OleUninitialize: new functions
* [if1632/ole2disp.spec]
Added missing ordinals above 109
* [misc/ole2nls.c][if1632/ole2nls.spec][include/winnls.h]
New file winnls.h
GetLocaleInfoA: new function
* [if1632/shell.spec]
Added FindEnvironmentString as stub
* [misc/olecli.c][if1632/olecli.spec]
OleIsDcMeta: New function
* [objects/font][misc/gdi.spec]
GetKerningPairs: new function
* [misc/shell.c]
ShellExecute: Implemented support for starting programs
* [if1632/user.spec]
Inserted missing relay to GetClipCursor
Sun Jun 11 20:34:47 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Fix a problem with the local heap.
* [include/wintypes.h]
Fixed wrong declarations of CATCHBUF and LPCATCHBUF.
* [include/mdi.h] [windows/mdi.c]
This code still assumed segmented address==linear address. Fixed.
* [include/msdos.h] [misc/dos_fs.c]
The filemask field of the dosdirent structure could be overrun. Fixed.
If you had a file called foobar and a file called foo, trying to
FindFile(foo) could accidentally find file foobar instead. Fixed.
* [misc/file.c]
OpenFile(): Always return the full pathname in ofs->szPathName. This
also fixes GetModuleFilename().
Prevent _lclose() from closing stderr or stdout.
* [misc/profile.c]
Search for .ini files in the path of the current module as well.
(Needed by Lotus Organizer.)
* [loader/task.c] [loader/ne_image.c] [loader/module.c]
[memory/local.c]
Local heaps are now initialized by InitTask() for executables. DLLs
have to call LocalInit() themselves, LocalInit() has to put the
heap at the end of the segment when called with start==0. We no longer
allocate the DGROUP with 64k on startup, but grow the local heap
in LOCAL_GetBlock() when necessary.
* [loader/module.c]
LoadLibrary() should call LoadModule() in all cases, even if the
DLL is already loaded, to ensure that the reference count is correct.
* [loader/ne_image.c]
Some changes to function prolog fixup. Does anyone know exactly how
this is supposed to work? I am only guessing here.
In NE_InitializeDLLs(), initialize the DLLs a module refers to before
the module itself.
* [loader/task.c]
Initialize instance data at the beginning of the DGROUP in InitTask().
* [memory/local.c]
Some fixes for moveable blocks.
* [memory/selector.c]
All the IsBad*Pointer() functions returned exactly the wrong boolean
value in all cases!
* [objects/bitblt.c]
Fixed another null pointer dereference in debugging output.
* [objects/font.c]
Some more recovery possibilities for FONT_MatchFont() if a specified
font does not exist.
* [windows/win.c]
The dialog code may call CreateWindowEx with an integer in windowName.
This happens for static icon controls that expect a resource ID as
the window name. CreateWindowEx() used to crash. Fixed.
* [windows/class.c] [windows/win.c]
Window classes are owned by modules, not instances. Changed
RegisterClass(), UnregisterClass(), GetClassInfo() and CreateWindowEx()
accordingly.
Sat Jun 10 16:10:53 1995 Olaf Flebbe <o.flebbe@science-computing.uni-tuebingen.de>
* [miscemu/int21.c]
clock.exe was displaying incorrect year.
Fri Jun 9 20:36:56 1995 Victor Schneider <tailor@crl.com>
* [include/cursor.h] [windows/cursor.c]
Implemented CreateCursorIconIndirect().
1995-06-20 21:08:12 +02:00
|
|
|
return FALSE;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadStringPtr (KERNEL.337)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
BOOL16 WINAPI IsBadStringPtr16( SEGPTR ptr, UINT16 size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD sel = SELECTOROF( ptr );
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
/* check for data or readable code segment */
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!(ldt_get_flags( sel ) & 0x10)) return TRUE; /* system descriptor */
|
|
|
|
if ((ldt_get_flags( sel ) & 0x0a) == 0x08) return TRUE; /* non-readable code segment */
|
2000-12-13 21:20:09 +01:00
|
|
|
if (strlen(MapSL(ptr)) < size) size = strlen(MapSL(ptr)) + 1;
|
2020-04-01 22:56:30 +02:00
|
|
|
if (size && (OFFSETOF(ptr) + size - 1 > ldt_get_limit( sel ))) return TRUE;
|
Release 950620
Mon Jun 19 20:29:50 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [debugger/*.c]
Modified debugger to use segmented pointers everywhere.
* [if1632/shell.spec] [if1632/sound.spec] [if1632/user.spec]
Declared all functions that return only 16-bit as 'pascal16'.
* [include/ldt.h] [memory/ldt.c]
Export LDT_EntryToBytes (new) and LDT_BytesToEntry for DPMI.
Maintain a copy of the selector flags, removing the need to make a
system call to retrieve an LDT entry.
* [loader/module.c]
Fixed bug with module file handle cache.
* [loader/ne_resource.c]
Fixed file name bug in NE_AccessResource().
* [loader/resource.c]
Fixed bug in LoadIcon() that caused wrong colors to be used for
the icon mask.
* [loader/signal.c]
Moved instruction emulation to miscemu/instr.c.
* [misc/dos_fs.c] [miscemu/int21.c]
Lots of small fixes, thanks to Morten Welinder.
* [miscemu/dpmi.c]
More complete DPMI emulation.
* [miscemu/instr.c]
Added support for prefixes in instructions to emulate.
* [miscemu/int2f.c]
Use register macros instead of destroying the high part of 32-bit
registers.
* [objects/dc.c]
Fixed bug in GetDCState() that failed to clear the new DC.
* [rc/sysres.rc]
Removed dialogs 11 and 12 that were never used.
* [tools/build.c]
'pascal16' generated functions did not save %dx.
Removed use of %fs to access the stack.
%ds is no longer initialized before calling a 16-bit routine.
* [windows/defwnd.c]
Accept a NULL pointer as window title.
* [windows/mdi.c]
MDICascade: skip iconic windows.
Implemented CalcChildScroll().
* [windows/utility.c]
Fixed MulDiv() for illegal values.
* [windows/win.c]
Fixed X error in CreateWindowEx() when WM_NCCALCSIZE returned
a zero width or height.
Sun Jun 18 22:22:30 MET DST 1995 Fons Botman (botman@inter.nl.net)
* [controls/edit.c]
Fixed "uninitalized" message which -Wall couldnt see to be ok
in EDIT_WriteText.
* [include/debug.h]
Added define for extra checks in API definitions during debugging.
* [loader/ne_image.c]
Added newline in NE_FixupPrologs to avoid long lines.
* [misc/dos_fs.c]
Added extra safety check in DOS_ValidDrive.
* [misc/exec.c]
Fixed definition of ExitWindows.
Sun Jun 18 21:16:08 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Some fixes, mostly for memory management, but also for text selection
and tab postitions. General cleanup. Notepad.exe now works.
* [controls/combo.c]
Fix: the hwnd field of the DRAWITEMSTRUCT should always be that of
the combo box, not the ComboLBox that belongs to it.
* [controls/listbox.c]
Handle itemID field correctly throughout.
* [memory/local.c]
Implemented flag LMEM_ZEROINIT.
LocalReAlloc() could trash the heap. Fixed.
* [objects/font.c]
FONT_MatchFont(): don't get confused by negative widths.
Fixed a segfault in EnumFonts().
* [objects/text.c]
DrawText(): DT_CALCRECT implies DT_NOCLIP.
* [objects/dcvalues.c]
MAKELONG was used with bad parameters in DC_GET_X_Y.
* [windows/dialog.c]
Don't show the dialog if WS_VISIBLE isn't set in the template.
* [windows/utility.c]
UTILITY_convertArgs(): Never pass an expression containing ++ into a
macro...
* [windows/win.c]
SetParent() should unlink the window before changing the parent.
* [windows/message.c]
Don't call timer functions via CallWindowProc(), since it checks
whether hwnd==0 and does not call the function in that case.
* [miscemu/instr.c]
Ignore interrupt 0x3D, for VBRUN300.DLL.
* [misc/commdlg.c]
Don't rely on the itemData field of the DRAWITEMSTRUCT to contain a
pointer to the item text.
* [if1632/relay.c]
Disable OLE and DDEML DLLs by default, since they contain nothing but
stubs anyway. SHELL, COMMDLG and WIN87EM are left enabled, although
some programs may work better without them.
* [multimedia/*.c] [include/multimedia.h] [include/driver.h]
Begun cleaning things up a little. Replaced printfs with dprintf_
macros, made functions static where possible, and some other minor
changes.
Sun Jun 11 23:19:10 1995 Martin von Loewis <martin@informatik.hu-berlin.de>
* [debugger/dbg.y][debugger/dbg.l]
Removed special handling for FILE_IDENTIFER, because it caused
problems with x/<format> statements.
* [debugger/info.c]
Use SC_ESP instead of SC_EIP for stack dump.
* [misc/compobj.c][if1632/compobj.spec]
CoBuildVersion, CoInitialize, CoUninitialize: new functions
* [misc/ole2.c][if1632/ole2.spec][misc/Imakefile][include/ole2.h]
New files ole2.c, ole2.h
OleBuildVersion, OleInitialize, OleUninitialize: new functions
* [if1632/ole2disp.spec]
Added missing ordinals above 109
* [misc/ole2nls.c][if1632/ole2nls.spec][include/winnls.h]
New file winnls.h
GetLocaleInfoA: new function
* [if1632/shell.spec]
Added FindEnvironmentString as stub
* [misc/olecli.c][if1632/olecli.spec]
OleIsDcMeta: New function
* [objects/font][misc/gdi.spec]
GetKerningPairs: new function
* [misc/shell.c]
ShellExecute: Implemented support for starting programs
* [if1632/user.spec]
Inserted missing relay to GetClipCursor
Sun Jun 11 20:34:47 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Fix a problem with the local heap.
* [include/wintypes.h]
Fixed wrong declarations of CATCHBUF and LPCATCHBUF.
* [include/mdi.h] [windows/mdi.c]
This code still assumed segmented address==linear address. Fixed.
* [include/msdos.h] [misc/dos_fs.c]
The filemask field of the dosdirent structure could be overrun. Fixed.
If you had a file called foobar and a file called foo, trying to
FindFile(foo) could accidentally find file foobar instead. Fixed.
* [misc/file.c]
OpenFile(): Always return the full pathname in ofs->szPathName. This
also fixes GetModuleFilename().
Prevent _lclose() from closing stderr or stdout.
* [misc/profile.c]
Search for .ini files in the path of the current module as well.
(Needed by Lotus Organizer.)
* [loader/task.c] [loader/ne_image.c] [loader/module.c]
[memory/local.c]
Local heaps are now initialized by InitTask() for executables. DLLs
have to call LocalInit() themselves, LocalInit() has to put the
heap at the end of the segment when called with start==0. We no longer
allocate the DGROUP with 64k on startup, but grow the local heap
in LOCAL_GetBlock() when necessary.
* [loader/module.c]
LoadLibrary() should call LoadModule() in all cases, even if the
DLL is already loaded, to ensure that the reference count is correct.
* [loader/ne_image.c]
Some changes to function prolog fixup. Does anyone know exactly how
this is supposed to work? I am only guessing here.
In NE_InitializeDLLs(), initialize the DLLs a module refers to before
the module itself.
* [loader/task.c]
Initialize instance data at the beginning of the DGROUP in InitTask().
* [memory/local.c]
Some fixes for moveable blocks.
* [memory/selector.c]
All the IsBad*Pointer() functions returned exactly the wrong boolean
value in all cases!
* [objects/bitblt.c]
Fixed another null pointer dereference in debugging output.
* [objects/font.c]
Some more recovery possibilities for FONT_MatchFont() if a specified
font does not exist.
* [windows/win.c]
The dialog code may call CreateWindowEx with an integer in windowName.
This happens for static icon controls that expect a resource ID as
the window name. CreateWindowEx() used to crash. Fixed.
* [windows/class.c] [windows/win.c]
Window classes are owned by modules, not instances. Changed
RegisterClass(), UnregisterClass(), GetClassInfo() and CreateWindowEx()
accordingly.
Sat Jun 10 16:10:53 1995 Olaf Flebbe <o.flebbe@science-computing.uni-tuebingen.de>
* [miscemu/int21.c]
clock.exe was displaying incorrect year.
Fri Jun 9 20:36:56 1995 Victor Schneider <tailor@crl.com>
* [include/cursor.h] [windows/cursor.c]
Implemented CreateCursorIconIndirect().
1995-06-20 21:08:12 +02:00
|
|
|
return FALSE;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadHugeReadPtr (KERNEL.346)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
BOOL16 WINAPI IsBadHugeReadPtr16( SEGPTR ptr, DWORD size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD sel = SELECTOROF( ptr );
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2000-11-14 02:54:49 +01:00
|
|
|
/* check for data or readable code segment */
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!(ldt_get_flags( sel ) & 0x10)) return TRUE; /* system descriptor */
|
|
|
|
if ((ldt_get_flags( sel ) & 0x0a) == 0x08) return TRUE; /* non-readable code segment */
|
|
|
|
if (size && (OFFSETOF(ptr) + size - 1 > ldt_get_limit( sel ))) return TRUE;
|
Release 950620
Mon Jun 19 20:29:50 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [debugger/*.c]
Modified debugger to use segmented pointers everywhere.
* [if1632/shell.spec] [if1632/sound.spec] [if1632/user.spec]
Declared all functions that return only 16-bit as 'pascal16'.
* [include/ldt.h] [memory/ldt.c]
Export LDT_EntryToBytes (new) and LDT_BytesToEntry for DPMI.
Maintain a copy of the selector flags, removing the need to make a
system call to retrieve an LDT entry.
* [loader/module.c]
Fixed bug with module file handle cache.
* [loader/ne_resource.c]
Fixed file name bug in NE_AccessResource().
* [loader/resource.c]
Fixed bug in LoadIcon() that caused wrong colors to be used for
the icon mask.
* [loader/signal.c]
Moved instruction emulation to miscemu/instr.c.
* [misc/dos_fs.c] [miscemu/int21.c]
Lots of small fixes, thanks to Morten Welinder.
* [miscemu/dpmi.c]
More complete DPMI emulation.
* [miscemu/instr.c]
Added support for prefixes in instructions to emulate.
* [miscemu/int2f.c]
Use register macros instead of destroying the high part of 32-bit
registers.
* [objects/dc.c]
Fixed bug in GetDCState() that failed to clear the new DC.
* [rc/sysres.rc]
Removed dialogs 11 and 12 that were never used.
* [tools/build.c]
'pascal16' generated functions did not save %dx.
Removed use of %fs to access the stack.
%ds is no longer initialized before calling a 16-bit routine.
* [windows/defwnd.c]
Accept a NULL pointer as window title.
* [windows/mdi.c]
MDICascade: skip iconic windows.
Implemented CalcChildScroll().
* [windows/utility.c]
Fixed MulDiv() for illegal values.
* [windows/win.c]
Fixed X error in CreateWindowEx() when WM_NCCALCSIZE returned
a zero width or height.
Sun Jun 18 22:22:30 MET DST 1995 Fons Botman (botman@inter.nl.net)
* [controls/edit.c]
Fixed "uninitalized" message which -Wall couldnt see to be ok
in EDIT_WriteText.
* [include/debug.h]
Added define for extra checks in API definitions during debugging.
* [loader/ne_image.c]
Added newline in NE_FixupPrologs to avoid long lines.
* [misc/dos_fs.c]
Added extra safety check in DOS_ValidDrive.
* [misc/exec.c]
Fixed definition of ExitWindows.
Sun Jun 18 21:16:08 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Some fixes, mostly for memory management, but also for text selection
and tab postitions. General cleanup. Notepad.exe now works.
* [controls/combo.c]
Fix: the hwnd field of the DRAWITEMSTRUCT should always be that of
the combo box, not the ComboLBox that belongs to it.
* [controls/listbox.c]
Handle itemID field correctly throughout.
* [memory/local.c]
Implemented flag LMEM_ZEROINIT.
LocalReAlloc() could trash the heap. Fixed.
* [objects/font.c]
FONT_MatchFont(): don't get confused by negative widths.
Fixed a segfault in EnumFonts().
* [objects/text.c]
DrawText(): DT_CALCRECT implies DT_NOCLIP.
* [objects/dcvalues.c]
MAKELONG was used with bad parameters in DC_GET_X_Y.
* [windows/dialog.c]
Don't show the dialog if WS_VISIBLE isn't set in the template.
* [windows/utility.c]
UTILITY_convertArgs(): Never pass an expression containing ++ into a
macro...
* [windows/win.c]
SetParent() should unlink the window before changing the parent.
* [windows/message.c]
Don't call timer functions via CallWindowProc(), since it checks
whether hwnd==0 and does not call the function in that case.
* [miscemu/instr.c]
Ignore interrupt 0x3D, for VBRUN300.DLL.
* [misc/commdlg.c]
Don't rely on the itemData field of the DRAWITEMSTRUCT to contain a
pointer to the item text.
* [if1632/relay.c]
Disable OLE and DDEML DLLs by default, since they contain nothing but
stubs anyway. SHELL, COMMDLG and WIN87EM are left enabled, although
some programs may work better without them.
* [multimedia/*.c] [include/multimedia.h] [include/driver.h]
Begun cleaning things up a little. Replaced printfs with dprintf_
macros, made functions static where possible, and some other minor
changes.
Sun Jun 11 23:19:10 1995 Martin von Loewis <martin@informatik.hu-berlin.de>
* [debugger/dbg.y][debugger/dbg.l]
Removed special handling for FILE_IDENTIFER, because it caused
problems with x/<format> statements.
* [debugger/info.c]
Use SC_ESP instead of SC_EIP for stack dump.
* [misc/compobj.c][if1632/compobj.spec]
CoBuildVersion, CoInitialize, CoUninitialize: new functions
* [misc/ole2.c][if1632/ole2.spec][misc/Imakefile][include/ole2.h]
New files ole2.c, ole2.h
OleBuildVersion, OleInitialize, OleUninitialize: new functions
* [if1632/ole2disp.spec]
Added missing ordinals above 109
* [misc/ole2nls.c][if1632/ole2nls.spec][include/winnls.h]
New file winnls.h
GetLocaleInfoA: new function
* [if1632/shell.spec]
Added FindEnvironmentString as stub
* [misc/olecli.c][if1632/olecli.spec]
OleIsDcMeta: New function
* [objects/font][misc/gdi.spec]
GetKerningPairs: new function
* [misc/shell.c]
ShellExecute: Implemented support for starting programs
* [if1632/user.spec]
Inserted missing relay to GetClipCursor
Sun Jun 11 20:34:47 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Fix a problem with the local heap.
* [include/wintypes.h]
Fixed wrong declarations of CATCHBUF and LPCATCHBUF.
* [include/mdi.h] [windows/mdi.c]
This code still assumed segmented address==linear address. Fixed.
* [include/msdos.h] [misc/dos_fs.c]
The filemask field of the dosdirent structure could be overrun. Fixed.
If you had a file called foobar and a file called foo, trying to
FindFile(foo) could accidentally find file foobar instead. Fixed.
* [misc/file.c]
OpenFile(): Always return the full pathname in ofs->szPathName. This
also fixes GetModuleFilename().
Prevent _lclose() from closing stderr or stdout.
* [misc/profile.c]
Search for .ini files in the path of the current module as well.
(Needed by Lotus Organizer.)
* [loader/task.c] [loader/ne_image.c] [loader/module.c]
[memory/local.c]
Local heaps are now initialized by InitTask() for executables. DLLs
have to call LocalInit() themselves, LocalInit() has to put the
heap at the end of the segment when called with start==0. We no longer
allocate the DGROUP with 64k on startup, but grow the local heap
in LOCAL_GetBlock() when necessary.
* [loader/module.c]
LoadLibrary() should call LoadModule() in all cases, even if the
DLL is already loaded, to ensure that the reference count is correct.
* [loader/ne_image.c]
Some changes to function prolog fixup. Does anyone know exactly how
this is supposed to work? I am only guessing here.
In NE_InitializeDLLs(), initialize the DLLs a module refers to before
the module itself.
* [loader/task.c]
Initialize instance data at the beginning of the DGROUP in InitTask().
* [memory/local.c]
Some fixes for moveable blocks.
* [memory/selector.c]
All the IsBad*Pointer() functions returned exactly the wrong boolean
value in all cases!
* [objects/bitblt.c]
Fixed another null pointer dereference in debugging output.
* [objects/font.c]
Some more recovery possibilities for FONT_MatchFont() if a specified
font does not exist.
* [windows/win.c]
The dialog code may call CreateWindowEx with an integer in windowName.
This happens for static icon controls that expect a resource ID as
the window name. CreateWindowEx() used to crash. Fixed.
* [windows/class.c] [windows/win.c]
Window classes are owned by modules, not instances. Changed
RegisterClass(), UnregisterClass(), GetClassInfo() and CreateWindowEx()
accordingly.
Sat Jun 10 16:10:53 1995 Olaf Flebbe <o.flebbe@science-computing.uni-tuebingen.de>
* [miscemu/int21.c]
clock.exe was displaying incorrect year.
Fri Jun 9 20:36:56 1995 Victor Schneider <tailor@crl.com>
* [include/cursor.h] [windows/cursor.c]
Implemented CreateCursorIconIndirect().
1995-06-20 21:08:12 +02:00
|
|
|
return FALSE;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadHugeWritePtr (KERNEL.347)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
BOOL16 WINAPI IsBadHugeWritePtr16( SEGPTR ptr, DWORD size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
2020-04-01 22:55:24 +02:00
|
|
|
WORD sel = SELECTOROF( ptr );
|
1995-03-19 18:39:39 +01:00
|
|
|
|
2006-12-04 19:55:35 +01:00
|
|
|
/* check for writable data segment, ignoring expand-down and accessed flags */
|
2020-04-01 22:56:30 +02:00
|
|
|
if ((ldt_get_flags( sel ) ^ LDT_FLAGS_DATA) & 0x1a) return TRUE;
|
|
|
|
if (size && (OFFSETOF(ptr) + size - 1 > ldt_get_limit( sel ))) return TRUE;
|
Release 950620
Mon Jun 19 20:29:50 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [debugger/*.c]
Modified debugger to use segmented pointers everywhere.
* [if1632/shell.spec] [if1632/sound.spec] [if1632/user.spec]
Declared all functions that return only 16-bit as 'pascal16'.
* [include/ldt.h] [memory/ldt.c]
Export LDT_EntryToBytes (new) and LDT_BytesToEntry for DPMI.
Maintain a copy of the selector flags, removing the need to make a
system call to retrieve an LDT entry.
* [loader/module.c]
Fixed bug with module file handle cache.
* [loader/ne_resource.c]
Fixed file name bug in NE_AccessResource().
* [loader/resource.c]
Fixed bug in LoadIcon() that caused wrong colors to be used for
the icon mask.
* [loader/signal.c]
Moved instruction emulation to miscemu/instr.c.
* [misc/dos_fs.c] [miscemu/int21.c]
Lots of small fixes, thanks to Morten Welinder.
* [miscemu/dpmi.c]
More complete DPMI emulation.
* [miscemu/instr.c]
Added support for prefixes in instructions to emulate.
* [miscemu/int2f.c]
Use register macros instead of destroying the high part of 32-bit
registers.
* [objects/dc.c]
Fixed bug in GetDCState() that failed to clear the new DC.
* [rc/sysres.rc]
Removed dialogs 11 and 12 that were never used.
* [tools/build.c]
'pascal16' generated functions did not save %dx.
Removed use of %fs to access the stack.
%ds is no longer initialized before calling a 16-bit routine.
* [windows/defwnd.c]
Accept a NULL pointer as window title.
* [windows/mdi.c]
MDICascade: skip iconic windows.
Implemented CalcChildScroll().
* [windows/utility.c]
Fixed MulDiv() for illegal values.
* [windows/win.c]
Fixed X error in CreateWindowEx() when WM_NCCALCSIZE returned
a zero width or height.
Sun Jun 18 22:22:30 MET DST 1995 Fons Botman (botman@inter.nl.net)
* [controls/edit.c]
Fixed "uninitalized" message which -Wall couldnt see to be ok
in EDIT_WriteText.
* [include/debug.h]
Added define for extra checks in API definitions during debugging.
* [loader/ne_image.c]
Added newline in NE_FixupPrologs to avoid long lines.
* [misc/dos_fs.c]
Added extra safety check in DOS_ValidDrive.
* [misc/exec.c]
Fixed definition of ExitWindows.
Sun Jun 18 21:16:08 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Some fixes, mostly for memory management, but also for text selection
and tab postitions. General cleanup. Notepad.exe now works.
* [controls/combo.c]
Fix: the hwnd field of the DRAWITEMSTRUCT should always be that of
the combo box, not the ComboLBox that belongs to it.
* [controls/listbox.c]
Handle itemID field correctly throughout.
* [memory/local.c]
Implemented flag LMEM_ZEROINIT.
LocalReAlloc() could trash the heap. Fixed.
* [objects/font.c]
FONT_MatchFont(): don't get confused by negative widths.
Fixed a segfault in EnumFonts().
* [objects/text.c]
DrawText(): DT_CALCRECT implies DT_NOCLIP.
* [objects/dcvalues.c]
MAKELONG was used with bad parameters in DC_GET_X_Y.
* [windows/dialog.c]
Don't show the dialog if WS_VISIBLE isn't set in the template.
* [windows/utility.c]
UTILITY_convertArgs(): Never pass an expression containing ++ into a
macro...
* [windows/win.c]
SetParent() should unlink the window before changing the parent.
* [windows/message.c]
Don't call timer functions via CallWindowProc(), since it checks
whether hwnd==0 and does not call the function in that case.
* [miscemu/instr.c]
Ignore interrupt 0x3D, for VBRUN300.DLL.
* [misc/commdlg.c]
Don't rely on the itemData field of the DRAWITEMSTRUCT to contain a
pointer to the item text.
* [if1632/relay.c]
Disable OLE and DDEML DLLs by default, since they contain nothing but
stubs anyway. SHELL, COMMDLG and WIN87EM are left enabled, although
some programs may work better without them.
* [multimedia/*.c] [include/multimedia.h] [include/driver.h]
Begun cleaning things up a little. Replaced printfs with dprintf_
macros, made functions static where possible, and some other minor
changes.
Sun Jun 11 23:19:10 1995 Martin von Loewis <martin@informatik.hu-berlin.de>
* [debugger/dbg.y][debugger/dbg.l]
Removed special handling for FILE_IDENTIFER, because it caused
problems with x/<format> statements.
* [debugger/info.c]
Use SC_ESP instead of SC_EIP for stack dump.
* [misc/compobj.c][if1632/compobj.spec]
CoBuildVersion, CoInitialize, CoUninitialize: new functions
* [misc/ole2.c][if1632/ole2.spec][misc/Imakefile][include/ole2.h]
New files ole2.c, ole2.h
OleBuildVersion, OleInitialize, OleUninitialize: new functions
* [if1632/ole2disp.spec]
Added missing ordinals above 109
* [misc/ole2nls.c][if1632/ole2nls.spec][include/winnls.h]
New file winnls.h
GetLocaleInfoA: new function
* [if1632/shell.spec]
Added FindEnvironmentString as stub
* [misc/olecli.c][if1632/olecli.spec]
OleIsDcMeta: New function
* [objects/font][misc/gdi.spec]
GetKerningPairs: new function
* [misc/shell.c]
ShellExecute: Implemented support for starting programs
* [if1632/user.spec]
Inserted missing relay to GetClipCursor
Sun Jun 11 20:34:47 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/edit.c]
Fix a problem with the local heap.
* [include/wintypes.h]
Fixed wrong declarations of CATCHBUF and LPCATCHBUF.
* [include/mdi.h] [windows/mdi.c]
This code still assumed segmented address==linear address. Fixed.
* [include/msdos.h] [misc/dos_fs.c]
The filemask field of the dosdirent structure could be overrun. Fixed.
If you had a file called foobar and a file called foo, trying to
FindFile(foo) could accidentally find file foobar instead. Fixed.
* [misc/file.c]
OpenFile(): Always return the full pathname in ofs->szPathName. This
also fixes GetModuleFilename().
Prevent _lclose() from closing stderr or stdout.
* [misc/profile.c]
Search for .ini files in the path of the current module as well.
(Needed by Lotus Organizer.)
* [loader/task.c] [loader/ne_image.c] [loader/module.c]
[memory/local.c]
Local heaps are now initialized by InitTask() for executables. DLLs
have to call LocalInit() themselves, LocalInit() has to put the
heap at the end of the segment when called with start==0. We no longer
allocate the DGROUP with 64k on startup, but grow the local heap
in LOCAL_GetBlock() when necessary.
* [loader/module.c]
LoadLibrary() should call LoadModule() in all cases, even if the
DLL is already loaded, to ensure that the reference count is correct.
* [loader/ne_image.c]
Some changes to function prolog fixup. Does anyone know exactly how
this is supposed to work? I am only guessing here.
In NE_InitializeDLLs(), initialize the DLLs a module refers to before
the module itself.
* [loader/task.c]
Initialize instance data at the beginning of the DGROUP in InitTask().
* [memory/local.c]
Some fixes for moveable blocks.
* [memory/selector.c]
All the IsBad*Pointer() functions returned exactly the wrong boolean
value in all cases!
* [objects/bitblt.c]
Fixed another null pointer dereference in debugging output.
* [objects/font.c]
Some more recovery possibilities for FONT_MatchFont() if a specified
font does not exist.
* [windows/win.c]
The dialog code may call CreateWindowEx with an integer in windowName.
This happens for static icon controls that expect a resource ID as
the window name. CreateWindowEx() used to crash. Fixed.
* [windows/class.c] [windows/win.c]
Window classes are owned by modules, not instances. Changed
RegisterClass(), UnregisterClass(), GetClassInfo() and CreateWindowEx()
accordingly.
Sat Jun 10 16:10:53 1995 Olaf Flebbe <o.flebbe@science-computing.uni-tuebingen.de>
* [miscemu/int21.c]
clock.exe was displaying incorrect year.
Fri Jun 9 20:36:56 1995 Victor Schneider <tailor@crl.com>
* [include/cursor.h] [windows/cursor.c]
Implemented CreateCursorIconIndirect().
1995-06-20 21:08:12 +02:00
|
|
|
return FALSE;
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadReadPtr (KERNEL.334)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
BOOL16 WINAPI IsBadReadPtr16( SEGPTR ptr, UINT16 size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
1996-09-13 18:50:47 +02:00
|
|
|
return IsBadHugeReadPtr16( ptr, size );
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadWritePtr (KERNEL.335)
|
1995-03-19 18:39:39 +01:00
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
BOOL16 WINAPI IsBadWritePtr16( SEGPTR ptr, UINT16 size )
|
1995-03-19 18:39:39 +01:00
|
|
|
{
|
1996-09-13 18:50:47 +02:00
|
|
|
return IsBadHugeWritePtr16( ptr, size );
|
1995-03-19 18:39:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1999-07-27 19:09:14 +02:00
|
|
|
/***********************************************************************
|
2001-07-02 21:59:40 +02:00
|
|
|
* IsBadFlatReadWritePtr (KERNEL.627)
|
1999-07-27 19:09:14 +02:00
|
|
|
*/
|
|
|
|
BOOL16 WINAPI IsBadFlatReadWritePtr16( SEGPTR ptr, DWORD size, BOOL16 bWrite )
|
|
|
|
{
|
|
|
|
return bWrite? IsBadHugeWritePtr16( ptr, size )
|
|
|
|
: IsBadHugeReadPtr16( ptr, size );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
1997-03-29 18:20:20 +01:00
|
|
|
/************************************* Win95 pointer mapping functions *
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2001-12-19 20:16:27 +01:00
|
|
|
struct mapls_entry
|
|
|
|
{
|
|
|
|
struct mapls_entry *next;
|
|
|
|
void *addr; /* linear address */
|
|
|
|
int count; /* ref count */
|
|
|
|
WORD sel; /* selector */
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct mapls_entry *first_entry;
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* MapLS (KERNEL32.@)
|
|
|
|
* MapLS (KERNEL.358)
|
|
|
|
*
|
|
|
|
* Maps linear pointer to segmented.
|
|
|
|
*/
|
|
|
|
SEGPTR WINAPI MapLS( LPCVOID ptr )
|
|
|
|
{
|
|
|
|
struct mapls_entry *entry, *free = NULL;
|
2004-06-14 19:04:34 +02:00
|
|
|
const void *base;
|
2001-12-19 20:16:27 +01:00
|
|
|
SEGPTR ret = 0;
|
|
|
|
|
2005-09-12 23:22:32 +02:00
|
|
|
if (!HIWORD(ptr)) return (SEGPTR)LOWORD(ptr);
|
2001-12-19 20:16:27 +01:00
|
|
|
|
2007-05-30 12:31:52 +02:00
|
|
|
base = (const char *)ptr - ((ULONG_PTR)ptr & 0x7fff);
|
2001-12-19 20:16:27 +01:00
|
|
|
HeapLock( GetProcessHeap() );
|
|
|
|
for (entry = first_entry; entry; entry = entry->next)
|
|
|
|
{
|
|
|
|
if (entry->addr == base) break;
|
|
|
|
if (!entry->count) free = entry;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!entry)
|
|
|
|
{
|
|
|
|
if (!free) /* no free entry found, create a new one */
|
|
|
|
{
|
|
|
|
if (!(free = HeapAlloc( GetProcessHeap(), 0, sizeof(*free) ))) goto done;
|
2020-04-01 22:56:30 +02:00
|
|
|
if (!(free->sel = SELECTOR_AllocBlock( base, 0x10000, LDT_FLAGS_DATA )))
|
2001-12-19 20:16:27 +01:00
|
|
|
{
|
|
|
|
HeapFree( GetProcessHeap(), 0, free );
|
|
|
|
goto done;
|
|
|
|
}
|
|
|
|
free->count = 0;
|
|
|
|
free->next = first_entry;
|
|
|
|
first_entry = free;
|
|
|
|
}
|
|
|
|
SetSelectorBase( free->sel, (DWORD)base );
|
2004-06-14 19:04:34 +02:00
|
|
|
free->addr = (void*)base;
|
2001-12-19 20:16:27 +01:00
|
|
|
entry = free;
|
|
|
|
}
|
|
|
|
entry->count++;
|
2004-06-14 19:04:34 +02:00
|
|
|
ret = MAKESEGPTR( entry->sel, (const char *)ptr - (char *)entry->addr );
|
2001-12-19 20:16:27 +01:00
|
|
|
done:
|
|
|
|
HeapUnlock( GetProcessHeap() );
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* UnMapLS (KERNEL32.@)
|
|
|
|
* UnMapLS (KERNEL.359)
|
|
|
|
*
|
|
|
|
* Free mapped selector.
|
|
|
|
*/
|
|
|
|
void WINAPI UnMapLS( SEGPTR sptr )
|
|
|
|
{
|
|
|
|
struct mapls_entry *entry;
|
|
|
|
WORD sel = SELECTOROF(sptr);
|
|
|
|
|
|
|
|
if (sel)
|
|
|
|
{
|
|
|
|
HeapLock( GetProcessHeap() );
|
|
|
|
for (entry = first_entry; entry; entry = entry->next) if (entry->sel == sel) break;
|
|
|
|
if (entry && entry->count > 0) entry->count--;
|
|
|
|
HeapUnlock( GetProcessHeap() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1997-03-29 18:20:20 +01:00
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* MapSL (KERNEL32.@)
|
2001-07-11 20:56:41 +02:00
|
|
|
* MapSL (KERNEL.357)
|
1997-03-29 18:20:20 +01:00
|
|
|
*
|
|
|
|
* Maps fixed segmented pointer to linear.
|
|
|
|
*/
|
1997-08-24 18:00:30 +02:00
|
|
|
LPVOID WINAPI MapSL( SEGPTR sptr )
|
1997-03-29 18:20:20 +01:00
|
|
|
{
|
2020-04-01 22:56:30 +02:00
|
|
|
return (char *)ldt_get_base( SELECTOROF(sptr) ) + OFFSETOF(sptr);
|
1997-03-29 18:20:20 +01:00
|
|
|
}
|
|
|
|
|
1998-04-13 14:21:30 +02:00
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* MapSLFix (KERNEL32.@)
|
1998-04-13 14:21:30 +02:00
|
|
|
*
|
|
|
|
* FIXME: MapSLFix and UnMapSLFixArray should probably prevent
|
|
|
|
* unexpected linear address change when GlobalCompact() shuffles
|
|
|
|
* moveable blocks.
|
|
|
|
*/
|
|
|
|
|
|
|
|
LPVOID WINAPI MapSLFix( SEGPTR sptr )
|
|
|
|
{
|
2000-12-13 21:20:09 +01:00
|
|
|
return MapSL(sptr);
|
1998-04-13 14:21:30 +02:00
|
|
|
}
|
|
|
|
|
2009-09-28 19:58:45 +02:00
|
|
|
|
1998-04-13 14:21:30 +02:00
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* UnMapSLFixArray (KERNEL32.@)
|
2006-01-13 14:26:24 +01:00
|
|
|
*
|
|
|
|
* Must not change EAX, hence defined as asm function.
|
1998-04-13 14:21:30 +02:00
|
|
|
*/
|
2009-06-14 15:34:09 +02:00
|
|
|
__ASM_STDCALL_FUNC( UnMapSLFixArray, 8, "ret $8" )
|
Release 980601
Sun May 31 13:40:13 1998 Alexandre Julliard <julliard@lrc.epfl.ch>
* [if1632/signal.c]
Added display of exception name.
* [loader/task.c]
Yet another attempt at fixing SwitchStackTo/SwitchStackBack.
* [memory/selector.c] [relay32/builtin32.c] [tools/build.c]
[win32/kernel32.c]
Generate an assembly stub for Win32 register functions to make
their names available at link time.
* [programs/*/Makefile.in]
Added hacks to support old resource compiler.
Fri May 29 16:27:14 1998 Marcus Meissner <marcus@jet.franken.de>
* [tools/testrun]
Merge of my testscripts at home into one single perl program
(tested with perl5). Works only on Linux due to 'ps' and 'ipcs'
magic.
* [controls/menu.c]
Added some DefaultMenuItem stubs.
* [debugger/stabs.c]
Fixed stabs loading, now supports (int,int) typeinfo format used
by gcc-2.8 and egcs-1. If it still crashes, please mail me.
* [if1632/][relay32/]
Added msvideo.dll (stubs only)
Replaced some ptr by str for stringcases
Added some new stubs (VxDCall, FindCloseNotif....)
* [misc/network.c]
Some argument fixes.
* [misc/registry.c][misc/cpu.c]
Registry initialization partially rewritten and enhanced.
* [scheduler/*.c]
Some additions so we don't do kill(0,SIGUSR1) (kill processgroup
instead of targeted thread)
Added SetThreadContext.
Thu May 28 23:59:59 1998 Bertho Stultiens <bertho@akhphd.au.dk>
* [tools/wrc/*]
New resource compiler version 1.0.0 (28-May-1998)
* [Make.rules.in] [Makefile.in]
Changed and added rc rules to point to tools/wrc/wrc.
* [configure.in] [include/config.h.in]
Added check for function 'stricmp'.
* [include/resource.h]
Commented out the old resource structure to catch references.
It also includes wrc_rsc.h.
* [include/wrc_rsc.h]
New file. Definitions for the resources generated with wrc.
* [include/windows.h]
Added #ifdef RC_INVOKED to exclude stdarg.h.
Added SS_NOTIFY flag.
* [include/winnls.h]
Added SUBLANG_* definitions and corrected some defaults.
* [loader/libres.c]
Changed the sysres load functions to support wrc generated
resources.
* [resource/sysres_*.rc]
Added #include <windows.h>
* [resource/sysres.c]
Changed declarations to match wrc's output
* [resource/Makefile.in]
Changed rules to work with wrc.
* [tools/makedep.c]
Changed generation of .rc file dependencies to .s target.
Thu May 28 22:28:39 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [files/file.c][include/windows.c][relay32/kernel32.spec]
Implemented GetFileAttributesEx32A/W.
* [misc/imagelist.h][include/commctrl.h][relay32/comctl32.spec]
Added ImageList_Read and ImageList_Write stubs.
Added ImageList_AddIcon function.
Added ImageList_LoadImage. It is the same as ImageList_LoadImage32A.
* [controls/header.c]
Fixed bitmap drawing bug.
Added full bitmap support.
* [include/commctrl.h]
Added missing header macros.
* [controls/toolbar.c][include/toolbar.h][include/commctrl.h]
[controls/commctrl.c] [relay32/comctl32.spec]
First implementation of toolbar control.
Implemented CreateToolbar, CreateToolbarEx and CreateMappedBitmap.
* [controls/progress.c][controls/status.c]
Some code cleanup.
* [controls/commctrl.c][include/commctrl.h][relay32/comctl32.spec]
Removed CreateStatusWindow16 and DrawStatusText16.
CreateStatusWindow is the same as CreateStatusWindow32A.
DrawStatusText is the same as DrawStatusText32A.
Thu May 28 16:01:28 1998 Matthew J. Francis <asbel@dial.pipex.com>
* [objects/bitmap.c] [objects/bitmap.h] [objects/oembitmap.c]
[objects/dc.c] [graphics/x11drv/bitblt.c]
Added partial implementation of CreateDIBSection, with great thanks
to Ulrich Weigand <weigand@informatik.uni-erlangen.de> for
contributing the bulk of the patch.
Wed May 27 19:04:31 1998 Ulrich Weigand <weigand@informatik.uni-erlangen.de>
* [win32/kernel32.c] [if1632/thunk.c] [include/flatthunk.h]
ThunkConnect16 and related functions moved to emulator.
* [loader/ne/segment.c]
Call DllEntryPoint with correct arguments.
* [relay32/builtin32.c]
Bugfix: Relay debugging did not work for multiple processes.
* [controls/menu.c]
Bugfix: dwItemData was not set for MF_OWNERDRAW menus.
* [if1632/relay.c] [relay32/relay386.c]
Relay messages converted to use DPRINTF.
* [controls/desktop.c] [relay32/user32.spec]
Implemented PaintDesktop.
* [files/profile.c] [if1632/kernel.spec] [misc/network.c]
[misc/printdrv.c] [relay32/winspool.spec]
[win32/ordinals.c] [relay32/kernel32.spec]
Some stubs added.
* [relay32/mpr.spec]
All ordinals were off by one.
Tue May 26 13:32:57 1998 Bill Hawes <whawes@star.net>
* [misc/lstr.c] [include/casemap.h] [tools/unimap.pl]
Added Unicode case conversion routines towupper/towlower,
with mapping tables casemap.h created by tools/unimap.pl.
* [misc/ntdll.c] [include/winnls.h] [relay32/ntdll.spec]
[relay32/advapi.spec]
Minimal implementation of IsTextUnicode, just enough to get
NT4 notepad to open ascii/unicode files.
* [Make.rules.in] [resources/sysres_En.rc]
Added include file dlgs.h for building resource files, so that
resources can refer to defined values (e.g. pshHelp).
* [misc/crtdll.c] [relay32/crtdll.spec]
Use towupper/towlower for 32W case conversions.
* [memory/string.c]
Use towupper for 32W case conversions.
* [ole/ole2nls.c]
Use towupper for 32W case conversions; fix mem leak; minor cleanup
* [controls/edit.c]
Added soft break flag to edit state. Print unknown action values
for WM_VSCROLL (action 190 occurs when running NT4 notepad.)
Mon May 25 22:42:40 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [files/file.c]
Care for a pathological case in SetFilePointer.
* [graphics/x11drv/xfont.c]
Handle longer Font names in LFD_ComposeLFD and try to catch errors.
* [loader/pe_image.c]
Unload Dummymodule when PE_LoadLibraryEx32A fails with
PE_LoadImage (makes Encarta 98 installer proceed).
* [misc/registry.c]
Move a check for a special case in RegCreateKeyEx32W after the
check for existence.
Tue May 25 20:18:26 1998 Matthew Becker <mbecker@glasscity.net>
* [misc/ntdll.c]
Added some stubs, just guessing at the size of their param lists.
* [misc/registry.c]
Added stubs for RegUnLoadKey, RegSetKeySecurity, RegSaveKey,
RegRestoreKey, and RegReplaceKey
* [programs/regtest/regtest.c]
Updated registry testing program.
Sun May 24 18:11:40 1998 Alex Priem <alexp@sci.kun.nl>
* [file/profile.c]
Added flag 'return_values' to PROFILE_GetSection.
Sun May 24 13:41:10 1998 James Juran <jrj120@psu.edu>
* [misc/shell.c] [files/directory.c]
Documentation/debugging info additions.
* [*/*.c] [include/*.h]
Moved many extern function definitions to appropriate header files.
Cleaned up a few compile warnings.
If #include "debug.h" is present, removed #include <stdio.h>.
debug.h includes stdio.h, so it is not necessary to include both.
* [graphics/*.c] [if1632/signal.c] [ipc/*.c] [scheduler/*.c]
[win32/*.c] [windows/*.c]
Final patch to convert fprintf statements to new debugging interface.
Some fprintfs are still left, especially in the debugger/ directory.
However, IMHO, it's not worth the effort to change the rest.
Fri May 22 21:58:35 1998 Morten Welinder <terra@diku.dk>
* [windows/keyboard.c]
Correct handling of keys "`-=[]\;',./".
Fri May 22 12:06:00 1998 Per Lindstrm <pelinstr@algonet.se>
* [include/windows.h] [relay32/kernel32.spec] [win32/console.c]
Added stub for ReadConsoleOutputCharacter32A.
Thu May 21 16:45:48 1998 Pascal Cuoq <pcuoq@ens-lyon.fr>
* [ole/ole2nls.c]
Began better implementation of LCMapString32A.
Not very well tested yet, and still need improvements.
* [controls/scroll.c]
Documented functions.
Wed May 20 21:37:56 1998 Peter Hunnisett <hunnise@nortel.ca>
* [include/windows.h][misc/main.c]
Change SystemParameterInfo to support SPI_GETHIGHCONTRAST. Also
include some missing SPI_ definitions.
* [include/dsound.h][multimedia/dsound.c][relay32/dplayx.spec]
Added stubs for DirectPlayLobbyCreate[AW]. Not sure if these
should go into a new files dplayx.c? Anyone care?
* [include/winnls.h]
Added two missing flags for the CompareString32 functions.
1998-06-01 12:44:35 +02:00
|
|
|
|
2000-04-06 22:21:16 +02:00
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SMapLS (KERNEL32.@)
|
2000-04-06 22:21:16 +02:00
|
|
|
*/
|
2009-06-14 15:34:09 +02:00
|
|
|
__ASM_STDCALL_FUNC( SMapLS, 0,
|
2006-01-13 14:26:24 +01:00
|
|
|
"xor %edx,%edx\n\t"
|
|
|
|
"testl $0xffff0000,%eax\n\t"
|
|
|
|
"jz 1f\n\t"
|
|
|
|
"pushl %eax\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("MapLS",4) "\n\t"
|
2006-01-13 14:26:24 +01:00
|
|
|
"movl %eax,%edx\n"
|
2007-01-13 00:38:07 +01:00
|
|
|
"1:\tret" )
|
1997-08-24 18:00:30 +02:00
|
|
|
|
2000-04-06 22:21:16 +02:00
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS (KERNEL32.@)
|
2000-04-06 22:21:16 +02:00
|
|
|
*/
|
2009-06-14 15:34:09 +02:00
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS, 0,
|
2006-01-13 14:26:24 +01:00
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl %eax\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2006-01-13 14:26:24 +01:00
|
|
|
"popl %eax\n\t"
|
2007-01-13 00:38:07 +01:00
|
|
|
"ret" )
|
2000-04-06 22:21:16 +02:00
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_8 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*
|
|
|
|
* These functions map linear pointers at [EBP+xxx] to segmented pointers
|
|
|
|
* and return them.
|
|
|
|
* Win95 uses some kind of alias structs, which it stores in [EBP+x] to
|
|
|
|
* unravel them at SUnMapLS. We just store the segmented pointer there.
|
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_8, 0,
|
|
|
|
"movl 8(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,8(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_12 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_12, 0,
|
|
|
|
"movl 12(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,12(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_16 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_16, 0,
|
|
|
|
"movl 16(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,16(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_20 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_20, 0,
|
|
|
|
"movl 20(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,20(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_24 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_24, 0,
|
|
|
|
"movl 24(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,24(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_28 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_28, 0,
|
|
|
|
"movl 28(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,28(%ebp)\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SMapLS_IP_EBP_32 (KERNEL32.@)
|
2000-04-06 22:21:16 +02:00
|
|
|
*/
|
2010-06-12 12:08:45 +02:00
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_32, 0,
|
|
|
|
"movl 32(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,32(%ebp)\n\t"
|
|
|
|
"ret" )
|
2005-05-07 20:25:51 +02:00
|
|
|
|
2010-06-12 12:08:45 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* SMapLS_IP_EBP_36 (KERNEL32.@)
|
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_36, 0,
|
|
|
|
"movl 36(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,36(%ebp)\n\t"
|
|
|
|
"ret" )
|
2000-04-06 22:21:16 +02:00
|
|
|
|
2010-06-12 12:08:45 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* SMapLS_IP_EBP_40 (KERNEL32.@)
|
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SMapLS_IP_EBP_40, 0,
|
|
|
|
"movl 40(%ebp),%eax\n\t"
|
2020-03-25 19:22:41 +01:00
|
|
|
"call " __ASM_STDCALL("SMapLS",0) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl %edx,40(%ebp)\n\t"
|
|
|
|
"ret" )
|
2000-04-06 22:21:16 +02:00
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SUnMapLS_IP_EBP_8 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_8, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 8(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,8(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2005-05-07 20:25:51 +02:00
|
|
|
* SUnMapLS_IP_EBP_12 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_12, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 12(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,12(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_16 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_16, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 16(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,16(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_20 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_20, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 20(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,20(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_24 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_24, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 24(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,24(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_28 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_28, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 28(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,28(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_32 (KERNEL32.@)
|
2010-06-12 12:08:45 +02:00
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_32, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 32(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,32(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
|
|
|
|
|
|
|
/***********************************************************************
|
2001-06-13 22:13:18 +02:00
|
|
|
* SUnMapLS_IP_EBP_36 (KERNEL32.@)
|
2000-04-06 22:21:16 +02:00
|
|
|
*/
|
2010-06-12 12:08:45 +02:00
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_36, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 36(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,36(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|
2005-05-07 20:25:51 +02:00
|
|
|
|
2010-06-12 12:08:45 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* SUnMapLS_IP_EBP_40 (KERNEL32.@)
|
|
|
|
*/
|
|
|
|
__ASM_STDCALL_FUNC( SUnMapLS_IP_EBP_40, 0,
|
|
|
|
"pushl %eax\n\t" /* preserve eax */
|
|
|
|
"pushl 40(%ebp)\n\t"
|
2019-05-16 18:13:45 +02:00
|
|
|
"call " __ASM_STDCALL("UnMapLS",4) "\n\t"
|
2010-06-12 12:08:45 +02:00
|
|
|
"movl $0,40(%ebp)\n\t"
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"ret" )
|