Release 960414
Sun Apr 14 12:51:27 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/menu.c] [include/dialog.h] [windows/dialog.c]
Made the resource loading code always use the correct Windows
layout for Winelib on other CPUs.
* [include/module.h] [loader/module.c]
Added self handle in NE_MODULE structure, so we can use a pointer
instead of a handle.
Added function MODULE_GetPtr() to validate a HMODULE.
* [memory/heap.c]
Implemented Win32 heap management.
* [memory/selector.c]
Fix selector limit for huge blocks.
Sat Apr 13 00:19:12 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [objects/metafile.c]
Fixed memcpy bug to allow memory based metafiles to work.
Fri Apr 12 19:25:41 1996 Frans van Dorsselaer <dorssel@rulhm1.leidenuniv.nl>
* [controls/edit.c] [controls/EDIT.TODO]
Complete rewrite. Everything changed: new features, new bugs.
Main addition: WordWrap.
Fri Apr 12 20:29:55 1996 Tristan Tarrant <tst@dcs.ed.ac.uk>
* [resources/sysres_It.rc]
Fixed a few mistakes in the file and resized some of the controls.
Fri Apr 12 09:55:13 1996 John Harvey <john@division.co.uk>
* [misc/winsocket.c]
Fixed broken #if defined that stopped unixware compiling.
* [win32/resource.c]
Added missing return to end of FindResource32.
Thu Apr 11 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/keyboard.c] [windows/event.c]
Fixed GetKeyState for mouse buttons.
* [windows/message.c]
WM_MOUSEACTIVATE wasn't sent in some cases.
Wed Apr 10 18:59:53 1996 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [objects/font.c]
Match slightly bigger font if height negative.
Mon Apr 8 13:46:15 1996 Deano Calver <deano@rattie.demon.co.uk>
* [multimedia/mmsystem.c]
Changed read's to FILE_read's in mmsystem to fix mmio bug.
Sun Apr 7 21:40:29 1996 Albrecht Kleine <kleine@ak.sax.de>
* [misc/commdlg.c] [resources/sysres_En.rc] [resources/sysres_De.rc]
Introduced ColorDlgProc() for ChooseColor() and replaced fitting
En-,De- resources.
As written in TODO: some national language support is needed here.
diff --git a/loader/ne_image.c b/loader/ne_image.c
index 8ae9004..2fcd8f9 100644
--- a/loader/ne_image.c
+++ b/loader/ne_image.c
@@ -49,7 +49,7 @@
int ordinal, additive;
unsigned short *sp;
- if (!(pModule = (NE_MODULE *)GlobalLock( hModule ))) return FALSE;
+ if (!(pModule = MODULE_GetPtr( hModule ))) return FALSE;
pSegTable = NE_SEG_TABLE( pModule );
pSeg = pSegTable + segnum - 1;
pModuleTable = NE_MODULE_TABLE( pModule );
@@ -171,7 +171,7 @@
address = MODULE_GetEntryPoint( module, ordinal );
if (!address)
{
- NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+ NE_MODULE *pTarget = MODULE_GetPtr( module );
if (!pTarget)
fprintf( stderr, "Module not found: %04x, reference %d of module %*.*s\n",
module, rep->target1,
@@ -187,7 +187,7 @@
}
if (debugging_fixup)
{
- NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+ NE_MODULE *pTarget = MODULE_GetPtr( module );
fprintf( stddeb,"%d: %*.*s.%d=%04x:%04x\n", i + 1,
*((BYTE *)pTarget + pTarget->name_table),
*((BYTE *)pTarget + pTarget->name_table),
@@ -208,7 +208,7 @@
if (!address)
{
- NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+ NE_MODULE *pTarget = MODULE_GetPtr( module );
fprintf( stderr, "Warning: no handler for %*.*s.%s, setting to 0:0\n",
*((BYTE *)pTarget + pTarget->name_table),
*((BYTE *)pTarget + pTarget->name_table),
@@ -216,7 +216,7 @@
}
if (debugging_fixup)
{
- NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+ NE_MODULE *pTarget = MODULE_GetPtr( module );
fprintf( stddeb,"%d: %*.*s.%s=%04x:%04x\n", i + 1,
*((BYTE *)pTarget + pTarget->name_table),
*((BYTE *)pTarget + pTarget->name_table),
@@ -347,23 +347,21 @@
*
* Fixup the exported functions prologs.
*/
-void NE_FixupPrologs( HMODULE hModule )
+void NE_FixupPrologs( NE_MODULE *pModule )
{
#ifdef WINELIB
fprintf(stderr,"NE_FixupPrologs should not be called for libwine\n");
#else
- NE_MODULE *pModule;
SEGTABLEENTRY *pSegTable;
WORD dgroup = 0;
WORD sel;
BYTE *p, *fixup_ptr, count;
- pModule = (NE_MODULE *)GlobalLock( hModule );
pSegTable = NE_SEG_TABLE(pModule);
if (pModule->flags & NE_FFLAGS_SINGLEDATA)
dgroup = pSegTable[pModule->dgroup-1].selector;
- dprintf_module( stddeb, "MODULE_FixupPrologs(%04x)\n", hModule );
+ dprintf_module( stddeb, "MODULE_FixupPrologs(%04x)\n", pModule->self );
p = (BYTE *)pModule + pModule->entry_table;
while (*p)
{
@@ -455,10 +453,11 @@
* es:si command line (always 0)
*/
- pModule = (NE_MODULE *)GlobalLock( hModule );
+ if (!(pModule = MODULE_GetPtr( hModule ))) return FALSE;
pSegTable = NE_SEG_TABLE( pModule );
- if (!(pModule->flags & NE_FFLAGS_LIBMODULE)) return TRUE; /*not a library*/
+ if (!(pModule->flags & NE_FFLAGS_LIBMODULE) ||
+ (pModule->flags & NE_FFLAGS_WIN32)) return TRUE; /*not a library*/
if (!pModule->cs) return TRUE; /* no initialization code */
if (!(pModule->flags & NE_FFLAGS_SINGLEDATA))
@@ -509,7 +508,7 @@
NE_MODULE *pModule;
HMODULE *pDLL;
- pModule = (NE_MODULE *)GlobalLock( hModule );
+ if (!(pModule = MODULE_GetPtr( hModule ))) return;
if (pModule->flags & NE_FFLAGS_WIN32)
{
PE_InitializeDLLs(hModule);