From 67ac8bd731e32476d31f744f2e05244461bc2f92 Mon Sep 17 00:00:00 2001
From: Roderick Colenbrander <thunderbird2k@gmail.com>
Date: Tue, 6 Oct 2009 20:41:33 +0200
Subject: [PATCH] Move allocation of the XRENDERINFO structure to a separate function.

---
 dlls/winex11.drv/xrender.c |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index 076b6d4..29d1d91 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -207,6 +207,19 @@ static CRITICAL_SECTION xrender_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
 #define NATIVE_BYTE_ORDER LSBFirst
 #endif
 
+static XRENDERINFO alloc_xrenderinfo(void)
+{
+    XRENDERINFO xrender = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct tagXRENDERINFO));
+
+    if(!xrender)
+    {
+        ERR("Unable to allocate XRENDERINFO!\n");
+        return NULL;
+    }
+    xrender->cache_index = -1;
+    return xrender;
+}
+
 static BOOL get_xrender_template(const WineXRenderFormatTemplate *fmt, XRenderPictFormat *templ, unsigned long *mask)
 {
     templ->id = 0;
@@ -807,10 +820,11 @@ BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE *physDev, HFONT hfont)
     lfsz_calc_hash(&lfsz);
 
     EnterCriticalSection(&xrender_cs);
-    if(!physDev->xrender) {
-        physDev->xrender = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
-				     sizeof(*physDev->xrender));
-	physDev->xrender->cache_index = -1;
+    if(!physDev->xrender)
+    {
+        physDev->xrender = alloc_xrenderinfo();
+        if(!physDev->xrender)
+            return 0;
     }
     else if(physDev->xrender->cache_index != -1)
         dec_ref_cache(physDev->xrender->cache_index);
-- 
1.6.0.4

