Ignore:
Timestamp:
Jan 25, 2001, 9:18:05 PM (25 years ago)
Author:
sandervl
Message:

memory map commit bugfix

File:
1 edited

Legend:

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

    r5011 r5027  
    1 /* $Id: mmap.cpp,v 1.49 2001-01-22 18:26:51 sandervl Exp $ */
     1/* $Id: mmap.cpp,v 1.50 2001-01-25 20:18:05 sandervl Exp $ */
    22
    33/*
     
    241241        //(returned in memInfo.RegionSize)
    242242        //If it's smaller than the mNrPages, it simply means one or more of the
    243             //other pages have already been committed
     243        //other pages have already been committed
    244244        if(!(memInfo.State & MEM_COMMIT))
    245245        {
     
    247247                goto fail;
    248248            }
    249             if(!fWriteAccess) {
    250                 offset = pageAddr - (ULONG)pMapping;
    251                 size   = memInfo.RegionSize;
    252                 if(offset + size > mSize) {
    253                     dprintf(("Adjusting size from %d to %d", size, mSize - offset));
    254                     size = mSize - offset;
    255                 }
    256                 if(SetFilePointer(hMemFile, offset, NULL, FILE_BEGIN) != offset) {
    257                     dprintf(("Win32MemMap::commitPage: SetFilePointer failed to set pos to %x", offset));
    258                     goto fail;
    259                 }
    260                 if(ReadFile(hMemFile, (LPSTR)pageAddr, size, &nrBytesRead, NULL) == FALSE) {
    261                     dprintf(("Win32MemMap::commitPage: ReadFile failed for %x", pageAddr));
    262                     goto fail;
    263                 }
    264                 if(nrBytesRead != size) {
    265                     dprintf(("Win32MemMap::commitPage: ReadFile didn't read all bytes for %x", pageAddr));
    266                     goto fail;
    267                 }
     249            offset = pageAddr - (ULONG)pMapping;
     250            size   = memInfo.RegionSize;
     251            if(offset + size > mSize) {
     252                dprintf(("Adjusting size from %d to %d", size, mSize - offset));
     253                size = mSize - offset;
     254            }
     255            if(SetFilePointer(hMemFile, offset, NULL, FILE_BEGIN) != offset) {
     256                dprintf(("Win32MemMap::commitPage: SetFilePointer failed to set pos to %x", offset));
     257                goto fail;
     258            }
     259            if(ReadFile(hMemFile, (LPSTR)pageAddr, size, &nrBytesRead, NULL) == FALSE) {
     260                dprintf(("Win32MemMap::commitPage: ReadFile failed for %x", pageAddr));
     261                goto fail;
     262            }
     263            if(nrBytesRead != size) {
     264                dprintf(("Win32MemMap::commitPage: ReadFile didn't read all bytes for %x", pageAddr));
     265                goto fail;
    268266            }
    269267            if(newProt != PAGE_READWRITE) {
Note: See TracChangeset for help on using the changeset viewer.