--- trunk/reactos/subsys/win32k/objects/text.c 2005-12-30 19:01:44 UTC (rev 20462)
+++ trunk/reactos/subsys/win32k/objects/text.c 2005-12-30 19:10:43 UTC (rev 20463)
@@ -1488,17 +1488,6 @@
// TODO: Write test-cases to exactly match real Windows in different
// bad parameters (e.g. does Windows check the DC or the RECT first?).
- if (lprc && (fuOptions & (ETO_OPAQUE | ETO_CLIPPED)))
- {
- // At least one of the two flags were specified. Copy lprc. Once.
- Status = MmCopyFromCaller(&SpecifiedDestRect, lprc, sizeof(RECT));
- if (!NT_SUCCESS(Status))
- {
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
- return FALSE;
- }
- }
-
dc = DC_LockDc(hDC);
if (!dc)
{
@@ -1512,6 +1501,18 @@
return TRUE;
}
+ if (lprc && (fuOptions & (ETO_OPAQUE | ETO_CLIPPED)))
+ {
+ // At least one of the two flags were specified. Copy lprc. Once.
+ Status = MmCopyFromCaller(&SpecifiedDestRect, lprc, sizeof(RECT));
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+ IntLPtoDP(dc, (POINT *) &SpecifiedDestRect, 2);
+ }
+
if (NULL != UnsafeDx && Count > 0)
{
Dx = ExAllocatePoolWithTag(PagedPool, Count * sizeof(INT), TAG_GDITEXT);