mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
490a27e012
Tue Jun 7 08:41:27 1994 Bob Amstadt (bob@pooh) * loader/selector.c (FixupFunctionPrologs): New function to fixup loaded DLL function prologs. It replaces the do nothing code with code that loads DS with the appropriate data segment for the DLL. * misc/cursor.c (LoadCursor): Disabled cursor loading from .EXE or .DLL. The code needs to handle the possibility of multiple cursors in a single directory. Also, it should check to see if the cursor is the right size. * objects/font.c (EnumFonts): Checked for lpLogFontList[i] == NULL * objects/gdiobj.c (SetObjectOwner): Removed stub. Replaced with simple return in gdi.spec. This function is not defined for the retail version of Windows. * memory/heap.c (WIN16_LocalHandleDelta): New function. This is really a dummy that imitates the proper return values. * loader/library.c (GetProcAddress): Fixed definition of IS_BUILTIN_DLL() macro. Mon Jun 6 18:15:40 1994 Bob Amstadt (bob@pooh) * miscemu/int21.c (SeekFile): Needed to return current position in DX:AX. * windows/utility.c (windows_wsprintf): Added support for '#' in format, and fixed bug with "ptr" being incremented too many times. * miscemu/int21.c (OpenExistingFile): Add code to handle opening files read-only and write-only. * loader/wine.c: Segment fixups now done in LoadImage instead of _WinMain. This is necessary to support LoadLibrary(). Sun Jun 5 17:34:24 1994 Erik Bos (erik@hacktic.nl) * [loader/*] - fixed: GetModuleHandle() sometimes returned a wrong handle. - don't init dlls when cs == 0 (lzexpand, doesn't seem to have a init function) - LoadLibrary & LoadImage now return error instead of stopping wine. - moved most of NE-functions into one file. - LoadLibrary() uses w_files list instead of its own list. - NE exectables are now fixed-up and initialised when loaded instead of only once before calling InitTask. * [miscemu/int15.c] [miscemu/int31.c] Added. * [loader/selector.c] Stubs added for {Get|Set}SelectorLimit(), {Get|Set}SelectorBase(). * [misc/main.c] Stub added for IsRomModule(). * [miscemu/int21.c] Some cleanup, added heap for returning data. Jun 6, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte) * [tools/build.c] Change MAX_ORDINALS define to higher value, 1299 entries. (MMSYSTEM doesn't have succesive numbers, some are around 1200). * [windows/utility.c] Bug fix in windows_wsprintf(), (twice increments ...). * [windows/winpos.c] Bug fix in SetWindowPos(), redraw was done if flag was set to SWP_NOREDRAW while SWP_SHOWWINDOW). * [misc/message.c] [controls/combo.c] Add an InvalidateRect() in WM_SHOWWINDOW to statisfy the new 'saveunder'. * [windows/win.c] In CreateWindowEx(), do SetMenu() calls after window creation, just before sending to WM_NCCALCSIZE. * [controls/menu.c] In function SetMenu(), now use SetWindowPos() with flags SWP_FRAMECHANGED to readjust menu area. Function MenuBarCalcSize() redone. Sun May 29 11:08:24 1994 David B. Thomas (dt@yenta.abq.nm.us) * [objects/text.c] Fixed problems associated with DT_WORDBREAK flag. String length was not being properly decremented when lines were folded, and wrapping was not performed when DT_NOCLIP and DT_NOPREFIX were both on in addition to DT_WORDBREAK. Windows does wrapping in this case, and now so does wine. Sun Jun 5 19:17:49 1994 Olaf Flebbe (olaf@dragon) * [edit.c] cp1 was uninitialized iff lineno == 0 * FindFile tests for existance of file even if a full filename was supplied. What about unix file names? * [controls/listbox ] wndPtr was uninitialized for LB_SETTOPINDEX * [misc/property.c] Do not free lpProp. Is it really allocated by malloc? {edited by Bob Amstadt: changed free() to GlobalFree()}
87 lines
3.0 KiB
C
87 lines
3.0 KiB
C
/* $Id: heap.h,v 1.2 1993/07/04 04:04:21 root Exp root $
|
|
*/
|
|
/*
|
|
* Copyright Robert J. Amstadt, 1993
|
|
*/
|
|
#ifndef HEAP_H
|
|
#define HEAP_H
|
|
|
|
#include "segmem.h"
|
|
#include "regfunc.h"
|
|
#include "atom.h"
|
|
|
|
/**********************************************************************
|
|
* LOCAL HEAP STRUCTURES AND FUNCTIONS
|
|
*/
|
|
typedef struct heap_mem_desc_s
|
|
{
|
|
struct heap_mem_desc_s *prev, *next;
|
|
unsigned short length;
|
|
unsigned char lock;
|
|
unsigned char flags;
|
|
} MDESC;
|
|
|
|
typedef struct heap_local_heap_s
|
|
{
|
|
struct heap_local_heap_s *next;
|
|
MDESC *free_list;
|
|
ATOMTABLE *local_table;
|
|
unsigned short selector;
|
|
unsigned short delta; /* Number saved for Windows compat. */
|
|
} LHEAP;
|
|
|
|
extern void HEAP_Init(MDESC **free_list, void *start, int length);
|
|
extern void *HEAP_Alloc(MDESC **free_list, int flags, int bytes);
|
|
extern int HEAP_Free(MDESC **free_list, void *block);
|
|
extern void *HEAP_ReAlloc(MDESC **free_list, void *old_block,
|
|
int new_size, unsigned int flags);
|
|
extern LHEAP *HEAP_LocalFindHeap(unsigned short owner);
|
|
|
|
#define HEAP_OWNER (Segments[Stack16Frame[11] >> 3].owner)
|
|
#define LOCALHEAP() (&HEAP_LocalFindHeap(HEAP_OWNER)->free_list)
|
|
#define LOCALATOMTABLE() (&HEAP_LocalFindHeap(HEAP_OWNER)->local_table)
|
|
|
|
/**********************************************************************
|
|
* GLOBAL HEAP STRUCTURES AND FUNCTIONS:
|
|
*
|
|
* Global memory pool descriptor. Segments MUST be maintained in segment
|
|
* ascending order. If not the reallocation routine will die a horrible
|
|
* death.
|
|
*
|
|
* handle = 0, this descriptor contains the address of a free pool.
|
|
* != 0, this describes an allocated block.
|
|
*
|
|
* sequence = 0, this is not a huge block
|
|
* > 0, this is a portion of a huge block
|
|
* =-1, this is a free segment
|
|
*
|
|
* addr - address of this memory block.
|
|
*
|
|
* length - used to maintain huge blocks.
|
|
*/
|
|
typedef struct global_mem_desc_s
|
|
{
|
|
struct global_mem_desc_s *next; /* Next GDESC in list */
|
|
struct global_mem_desc_s *prev; /* Previous GDESC in list */
|
|
unsigned short handle; /* Handle of this block. */
|
|
short sequence; /* Block sequence # in huge block */
|
|
void *addr; /* Address allocated with mmap() */
|
|
int length; /* Length of block */
|
|
int lock_count; /* Block lock count */
|
|
unsigned short alias; /* Offset-zero alias selector */
|
|
unsigned int alias_key; /* Offset-zero alias sh. mem. key */
|
|
void *linear_addr; /* Linear address of huge block */
|
|
int linear_key; /* Linear shared memory key */
|
|
int linear_count; /* Linear lock count */
|
|
} GDESC;
|
|
|
|
extern GDESC *GlobalList;
|
|
|
|
extern void *GlobalQuickAlloc(int size);
|
|
extern unsigned int GlobalHandleFromPointer(void *block);
|
|
extern GDESC *GlobalGetGDesc(unsigned int block);
|
|
extern void *GlobalLinearLock(unsigned int block);
|
|
extern unsigned int GlobalLinearUnlock(unsigned int block);
|
|
|
|
#endif /* HEAP_H */
|