Fix a bug caused by r57948

svn path=/trunk/; revision=57952
This commit is contained in:
Timo Kreuzer 2012-12-19 22:01:54 +00:00
parent 49a76c78e0
commit a011b6bc32

View file

@ -3996,7 +3996,7 @@ NtGdiGetRegionData(
_In_ ULONG cjBuffer, _In_ ULONG cjBuffer,
_Out_opt_bytecap_(cjBuffer) LPRGNDATA lpRgnData) _Out_opt_bytecap_(cjBuffer) LPRGNDATA lpRgnData)
{ {
ULONG cjSize; ULONG cjRects, cjSize;
PREGION prgn; PREGION prgn;
/* Lock the region */ /* Lock the region */
@ -4007,8 +4007,9 @@ NtGdiGetRegionData(
return 0; return 0;
} }
/* Calculate the region size */ /* Calculate the region sizes */
cjSize = prgn->rdh.nCount * sizeof(RECT) + sizeof(RGNDATAHEADER); cjRects = prgn->rdh.nCount * sizeof(RECT);
cjSize = cjRects + sizeof(RGNDATAHEADER);
/* Check if region data is requested */ /* Check if region data is requested */
if (lpRgnData) if (lpRgnData)
@ -4021,7 +4022,7 @@ NtGdiGetRegionData(
{ {
ProbeForWrite(lpRgnData, cjSize, sizeof(ULONG)); ProbeForWrite(lpRgnData, cjSize, sizeof(ULONG));
RtlCopyMemory(lpRgnData, &prgn->rdh, sizeof(RGNDATAHEADER)); RtlCopyMemory(lpRgnData, &prgn->rdh, sizeof(RGNDATAHEADER));
RtlCopyMemory(lpRgnData->Buffer, prgn->Buffer, cjSize); RtlCopyMemory(lpRgnData->Buffer, prgn->Buffer, cjRects);
} }
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{ {