Changeset 968


Ignore:
Timestamp:
Feb 21, 2008, 4:22:55 AM (18 years ago)
Author:
John Small
Message:

Improved version of fix for ticket 228.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/wrappers.c

    r967 r968  
    212212    EAOP2 eaop2;
    213213    APIRET rc;
     214    BOOL crosses = ((ULONG)pInfoBuf ^
     215                   ((ULONG)pInfoBuf + cbInfoBuf - 1)) &
     216                   ~0xffff;
    214217
    215218    switch (ulInfoLevel) {
    216219      case FIL_STANDARD:
    217         fs3 = *(PFILESTATUS3)pInfoBuf;  // Copy to buffer that does not cross 64K boundary
    218         rc = DosSetPathInfo(pszPathName, ulInfoLevel, &fs3, cbInfoBuf, flOptions);
     220        if (crosses)
     221        {
     222          fs3 = *(PFILESTATUS3)pInfoBuf;        // Copy to buffer that does not cross 64K boundary
     223          rc = DosSetPathInfo(pszPathName, ulInfoLevel, &fs3, cbInfoBuf, flOptions);
     224        }
     225        else
     226        {
     227          rc = DosSetPathInfo(pszPathName, ulInfoLevel, pInfoBuf, cbInfoBuf, flOptions);
     228        }
    219229        break;
    220230
Note: See TracChangeset for help on using the changeset viewer.