Commit a7bbf47f authored by Dave Belanger's avatar Dave Belanger Committed by Alexandre Julliard

Avoid excessive heap memory reallocation when generating EMF

metarecords in memory.
parent c93c27f4
...@@ -185,12 +185,16 @@ BOOL EMFDRV_WriteRecord( PHYSDEV dev, EMR *emr ) ...@@ -185,12 +185,16 @@ BOOL EMFDRV_WriteRecord( PHYSDEV dev, EMR *emr )
if (!WriteFile(physDev->hFile, (char *)emr, emr->nSize, NULL, NULL)) if (!WriteFile(physDev->hFile, (char *)emr, emr->nSize, NULL, NULL))
return FALSE; return FALSE;
} else { } else {
len = physDev->emh->nBytes; DWORD nEmfSize = HeapSize(GetProcessHeap(), 0, physDev->emh);
emh = HeapReAlloc( GetProcessHeap(), 0, physDev->emh, len ); len = physDev->emh->nBytes;
if (!emh) return FALSE; if (len > nEmfSize) {
physDev->emh = emh; nEmfSize += (nEmfSize / 2) + emr->nSize;
memcpy((CHAR *)physDev->emh + physDev->emh->nBytes - emr->nSize, emr, emh = HeapReAlloc(GetProcessHeap(), 0, physDev->emh, nEmfSize);
emr->nSize); if (!emh) return FALSE;
physDev->emh = emh;
}
memcpy((CHAR *)physDev->emh + physDev->emh->nBytes - emr->nSize, emr,
emr->nSize);
} }
return TRUE; return TRUE;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment