Ignore:
Timestamp:
Jul 16, 2002, 10:16:48 AM (23 years ago)
Author:
sandervl
Message:

Fix for loading PE images in low memory (introduced yesterday)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/oslibmem.cpp

    r8877 r8882  
    1 /* $Id: oslibmem.cpp,v 1.3 2002-07-15 14:28:52 sandervl Exp $ */
     1/* $Id: oslibmem.cpp,v 1.4 2002-07-16 08:16:47 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    9494//Allocate memory aligned at 64kb boundary
    9595//******************************************************************************
    96 DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD cbSize, DWORD flFlags)
     96DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD cbSize, DWORD flFlags, BOOL fLowMemory)
    9797{
    9898    PVOID   pvMemAddr;
    9999    DWORD   offset;
    100100    APIRET  rc;
    101 
     101    BOOL    fMemFlags = flAllocMem;
     102
     103    //Override low/high memory flag if necessary
     104    if(fLowMemory) {
     105        fMemFlags = 0;
     106    }
    102107    /*
    103108     * Let's try use the extended DosAllocMem API of Win32k.sys.
     
    105110    if (libWin32kInstalled())
    106111    {
    107         rc = DosAllocMemEx(lplpMemAddr, cbSize, flFlags | flAllocMem | OBJ_ALIGN64K);
     112        rc = DosAllocMemEx(lplpMemAddr, cbSize, flFlags | fMemFlags | OBJ_ALIGN64K);
    108113        if (rc != ERROR_NOT_SUPPORTED)  /* This call was stubbed until recently. */
    109114            return rc;
     
    114119     */
    115120
    116     rc = DosAllocMem(&pvMemAddr, cbSize, flFlags | flAllocMem);
     121    rc = DosAllocMem(&pvMemAddr, cbSize, flFlags | fMemFlags);
    117122    if(rc) {
    118123        dprintf(("!ERROR!: DosAllocMem failed with rc %d", rc));
     
    128133
    129134        //Allocate 64kb more so we can round the address to a 64kb aligned value
    130         rc = DosAllocMem((PPVOID)&addr64kb, cbSize + 64*1024,  (flFlags & ~PAG_COMMIT) | flAllocMem);
     135        rc = DosAllocMem((PPVOID)&addr64kb, cbSize + 64*1024,  (flFlags & ~PAG_COMMIT) | fMemFlags);
    131136        if(rc) {
    132137            dprintf(("!ERROR!: DosAllocMem failed with rc %d", rc));
Note: See TracChangeset for help on using the changeset viewer.