From c39a4131db6a2f5a040c153f687e28aa9aa73d65 Mon Sep 17 00:00:00 2001 From: Royce Mitchell III Date: Sat, 18 Dec 2004 23:55:26 +0000 Subject: [PATCH] IntSetCursor() don't BSOD in low-resource conditions svn path=/trunk/; revision=12214 --- reactos/subsys/win32k/ntuser/cursoricon.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/cursoricon.c b/reactos/subsys/win32k/ntuser/cursoricon.c index 57e45d7d8c3..00d01857967 100644 --- a/reactos/subsys/win32k/ntuser/cursoricon.c +++ b/reactos/subsys/win32k/ntuser/cursoricon.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: cursoricon.c,v 1.2 2004/12/12 17:56:52 weiden Exp $ */ +/* $Id: cursoricon.c,v 1.3 2004/12/18 23:55:26 royce Exp $ */ #include PCURICON_OBJECT FASTCALL @@ -81,8 +81,10 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor, DC_UnlockDc(Screen); BitmapObj = BITMAPOBJ_LockBitmap(dcbmp); - /* FIXME - BitmapObj can be NULL!!!!! */ + if ( !BitmapObj ) + return (HCURSOR)0; SurfObj = &BitmapObj->SurfObj; + ASSERT(SurfObj); } if (!NewCursor && (CurInfo->CurrentCursorObject || ForceChange)) @@ -164,7 +166,12 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor, MaskBmpObj->SurfObj.sizlBitmap, abs(MaskBmpObj->SurfObj.lDelta), MaskBmpObj->SurfObj.iBitmapFormat, BMF_TOPDOWN, NULL); - ASSERT(hMask); + if ( !hMask ) + { + BITMAPOBJ_UnlockBitmap(NewCursor->IconInfo.hbmMask); + BITMAPOBJ_UnlockBitmap(dcbmp); + return (HCURSOR)0; + } soMask = EngLockSurface((HSURF)hMask); EngCopyBits(soMask, &MaskBmpObj->SurfObj, NULL, NULL, &DestRect, &SourcePoint); -- 2.17.1