Author: khornicek
Date: Fri May 16 15:52:15 2014
New Revision: 63314

URL: http://svn.reactos.org/svn/reactos?rev=63314&view=rev
Log:
[OPENGL32]
- don't try to free an invalid address

Modified:
    trunk/reactos/dll/opengl/opengl32/wgl_font.c

Modified: trunk/reactos/dll/opengl/opengl32/wgl_font.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/opengl32/wgl_font.c?rev=63314&r1=63313&r2=63314&view=diff
==============================================================================
--- trunk/reactos/dll/opengl/opengl32/wgl_font.c        [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/opengl32/wgl_font.c        [iso-8859-1] Fri May 16 
15:52:15 2014
@@ -347,7 +347,7 @@
         BYTE *buf;
         TTPOLYGONHEADER *pph;
         TTPOLYCURVE *ppc;
-        GLdouble *vertices = NULL;
+        GLdouble *vertices = NULL, *vertices_temp = NULL;
         int vertex_total = -1;
 
         if(unicode)
@@ -359,6 +359,9 @@
             goto error;
 
         buf = HeapAlloc(GetProcessHeap(), 0, needed);
+
+        if(!buf)
+            goto error;
 
         if(unicode)
             GetGlyphOutlineW(hdc, glyph, GGO_NATIVE, &gm, needed, buf, 
&identity);
@@ -393,7 +396,7 @@
         while(!vertices)
         {
             if(vertex_total != -1)
-                vertices = HeapAlloc(GetProcessHeap(), 0, vertex_total * 3 * 
sizeof(GLdouble));
+                vertices_temp = vertices = HeapAlloc(GetProcessHeap(), 0, 
vertex_total * 3 * sizeof(GLdouble));
             vertex_total = 0;
 
             pph = (TTPOLYGONHEADER*)buf;
@@ -521,8 +524,11 @@
             pgluTessEndPolygon(tess);
         funcs->Translated((GLdouble)gm.gmCellIncX / em_size, 
(GLdouble)gm.gmCellIncY / em_size, 0.0);
         funcs->EndList();
+
         HeapFree(GetProcessHeap(), 0, buf);
-        HeapFree(GetProcessHeap(), 0, vertices);
+
+        if(vertices_temp)
+            HeapFree(GetProcessHeap(), 0, vertices_temp);
     }
 
  error:


Reply via email to