Use rect only if there are flags.
diff --git a/dlls/gdi/mfdrv/text.c b/dlls/gdi/mfdrv/text.c index 58db84d..33d8792 100644 --- a/dlls/gdi/mfdrv/text.c +++ b/dlls/gdi/mfdrv/text.c
@@ -37,12 +37,12 @@ BOOL ret; DWORD len; METARECORD *mr; - - if((!flags && rect) || (flags && !rect)) - WARN("Inconsistent flags and rect\n"); + + if (flags && !rect) + WARN("Inconsistent flags and rect\n"); len = sizeof(METARECORD) + (((count + 1) >> 1) * 2) + 2 * sizeof(short) + sizeof(UINT16); - if(rect) + if (rect&&flags) len += sizeof(RECT16); if (lpDx) len+=count*sizeof(INT16); @@ -55,10 +55,10 @@ *(mr->rdParm + 1) = x; *(mr->rdParm + 2) = count; *(mr->rdParm + 3) = flags; - if (rect) memcpy(mr->rdParm + 4, rect, sizeof(RECT16)); - memcpy(mr->rdParm + (rect ? 8 : 4), str, count); + if (rect&&flags) memcpy(mr->rdParm + 4, rect, sizeof(RECT16)); + memcpy(mr->rdParm + ((rect&&flags) ? 8 : 4), str, count); if (lpDx) - memcpy(mr->rdParm + (rect ? 8 : 4) + ((count + 1) >> 1),lpDx, + memcpy(mr->rdParm + ((rect&&flags) ? 8 : 4) + ((count + 1) >> 1),lpDx, count*sizeof(INT16)); ret = MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); HeapFree( GetProcessHeap(), 0, mr);