From c82718f9a29afca1ff597c16510760fd5ac6189f Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Wed, 5 Oct 2005 19:50:48 +0000 Subject: [PATCH] NtGdiDdCreateDirectDrawObject - add missing error checking for GDIOBJ_AllocObj - add missing error checking for GDIOBJ_LockObj svn path=/trunk/; revision=18280 --- reactos/subsys/win32k/ntddraw/ddraw.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/subsys/win32k/ntddraw/ddraw.c b/reactos/subsys/win32k/ntddraw/ddraw.c index f22e8ea6314..b6822869713 100644 --- a/reactos/subsys/win32k/ntddraw/ddraw.c +++ b/reactos/subsys/win32k/ntddraw/ddraw.c @@ -50,9 +50,7 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( DC_UnlockDc(pDC); return NULL; } - - BOOL success = pDC->DriverFunctions.EnableDirectDraw( pDC->PDev, &callbacks, &surface_callbacks, &palette_callbacks); @@ -64,7 +62,21 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( } HANDLE hDirectDraw = GDIOBJ_AllocObj(GDI_OBJECT_TYPE_DIRECTDRAW); + if (!hDirectDraw) + { + /* No more memmory */ + DC_UnlockDc(pDC); + return NULL; + } + PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW); + if (!pDirectDraw) + { + /* invalid handle */ + DC_UnlockDc(pDC); + return NULL; + } + pDirectDraw->Global.dhpdev = pDC->PDev; pDirectDraw->Local.lpGbl = &pDirectDraw->Global;