Author: tkreuzer
Date: Fri Nov 30 07:12:23 2007
New Revision: 30914
URL:
http://svn.reactos.org/svn/reactos?rev=30914&view=rev
Log:
fix some bugs
Modified:
trunk/reactos/subsystems/win32/win32k/objects/dc.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c Fri Nov 30 07:12:23 2007
@@ -2055,6 +2055,9 @@
PBITMAPOBJ pBmp;
HRGN hVisRgn;
BOOLEAN bFailed;
+ PGDIBRUSHOBJ pBrush;
+
+ if (hDC == NULL || hBmp == NULL) return NULL;
pDC = DC_LockDc(hDC);
if (!pDC)
@@ -2096,11 +2099,27 @@
}
/* Regenerate the XLATEOBJs. */
- EngDeleteXlate(pDC->XlateBrush);
- pDC->XlateBrush = IntGdiCreateBrushXlate(pDC, pDc_Attr->hbrush, &bFailed);
-
- EngDeleteXlate(pDC->XlatePen);
- pDC->XlatePen = IntGdiCreateBrushXlate(pDC, pDc_Attr->hpen, &bFailed);
+ pBrush = BRUSHOBJ_LockBrush(pDc_Attr->hbrush);
+ if (pBrush)
+ {
+ if (pDC->XlateBrush)
+ {
+ EngDeleteXlate(pDC->XlateBrush);
+ }
+ pDC->XlateBrush = IntGdiCreateBrushXlate(pDC, pBrush, &bFailed);
+ BRUSHOBJ_UnlockBrush(pBrush);
+ }
+
+ pBrush = PENOBJ_LockPen(pDc_Attr->hpen);
+ if (pBrush)
+ {
+ if (pDC->XlatePen)
+ {
+ EngDeleteXlate(pDC->XlatePen);
+ }
+ pDC->XlatePen = IntGdiCreateBrushXlate(pDC, pBrush, &bFailed);
+ PENOBJ_UnlockPen(pBrush);
+ }
DC_UnlockDc(pDC);
@@ -2128,6 +2147,8 @@
XLATEOBJ *XlateObj;
BOOLEAN bFailed;
+ if (hDC == NULL || hBrush == NULL) return NULL;
+
pDC = DC_LockDc(hDC);
if (!pDC)
{
@@ -2176,6 +2197,8 @@
PDC_ATTR pDc_Attr;
HFONT hOrgFont = NULL;
+ if (hDC == NULL || hFont == NULL) return NULL;
+
pDC = DC_LockDc(hDC);
if (!pDC)
{
@@ -2212,6 +2235,8 @@
PGDIBRUSHOBJ pPen;
XLATEOBJ *XlateObj;
BOOLEAN bFailed;
+
+ if (hDC == NULL || hPen == NULL) return NULL;
pDC = DC_LockDc(hDC);
if (!pDC)