aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/glx
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/glx')
-rw-r--r--xorg-server/glx/glxcmds.c3
-rw-r--r--xorg-server/glx/glxdri.c12
-rw-r--r--xorg-server/glx/glxdri2.c6
-rw-r--r--xorg-server/glx/glxdriswrast.c2
-rw-r--r--xorg-server/glx/glxext.c18
-rw-r--r--xorg-server/glx/glxscreens.c7
-rw-r--r--xorg-server/glx/single2.c6
-rw-r--r--xorg-server/glx/singlesize.c386
-rw-r--r--xorg-server/glx/xfont.c4
9 files changed, 221 insertions, 223 deletions
diff --git a/xorg-server/glx/glxcmds.c b/xorg-server/glx/glxcmds.c
index 7ce1f4fcf..1b67a9ac0 100644
--- a/xorg-server/glx/glxcmds.c
+++ b/xorg-server/glx/glxcmds.c
@@ -2431,8 +2431,7 @@ int __glXDisp_ClientInfo(__GLXclientState *cl, GLbyte *pc)
cl->GLClientmajorVersion = req->major;
cl->GLClientminorVersion = req->minor;
- if (cl->GLClientextensions)
- free(cl->GLClientextensions);
+ free(cl->GLClientextensions);
buf = (const char *)(req+1);
cl->GLClientextensions = xstrdup(buf);
diff --git a/xorg-server/glx/glxdri.c b/xorg-server/glx/glxdri.c
index d92115bc0..642382998 100644
--- a/xorg-server/glx/glxdri.c
+++ b/xorg-server/glx/glxdri.c
@@ -468,7 +468,7 @@ nooverride:
pRegion = NULL;
} else {
pRegion = DamageRegion(driDraw->pDamage);
- if (REGION_NIL(pRegion))
+ if (RegionNil(pRegion))
return Success;
}
@@ -531,8 +531,8 @@ nooverride:
int i, numRects;
BoxPtr p;
- numRects = REGION_NUM_RECTS (pRegion);
- p = REGION_RECTS (pRegion);
+ numRects = RegionNumRects (pRegion);
+ p = RegionRects (pRegion);
CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, 0) );
CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, 0) );
@@ -832,12 +832,12 @@ static void __glXReportDamage(__DRIdrawable *driDraw,
__glXenterServer(GL_FALSE);
- REGION_INIT(pDraw->pScreen, &region, (BoxPtr) rects, num_rects);
- REGION_TRANSLATE(pScreen, &region, pDraw->x, pDraw->y);
+ RegionInit(&region, (BoxPtr) rects, num_rects);
+ RegionTranslate(&region, pDraw->x, pDraw->y);
DamageRegionAppend(pDraw, &region);
/* This is wrong, this needs a seperate function. */
DamageRegionProcessPending(pDraw);
- REGION_UNINIT(pDraw->pScreen, &region);
+ RegionUninit(&region);
__glXleaveServer(GL_FALSE);
}
diff --git a/xorg-server/glx/glxdri2.c b/xorg-server/glx/glxdri2.c
index 1faefb002..f4cb76383 100644
--- a/xorg-server/glx/glxdri2.c
+++ b/xorg-server/glx/glxdri2.c
@@ -122,7 +122,7 @@ __glXDRIdrawableCopySubBuffer(__GLXdrawable *drawable,
box.y1 = private->height - y - h;
box.x2 = x + w;
box.y2 = private->height - y;
- REGION_INIT(drawable->pDraw->pScreen, &region, &box, 0);
+ RegionInit(&region, &box, 0);
DRI2CopyRegion(drawable->pDraw, &region,
DRI2BufferFrontLeft, DRI2BufferBackLeft);
@@ -139,7 +139,7 @@ __glXDRIdrawableWaitX(__GLXdrawable *drawable)
box.y1 = 0;
box.x2 = private->width;
box.y2 = private->height;
- REGION_INIT(drawable->pDraw->pScreen, &region, &box, 0);
+ RegionInit(&region, &box, 0);
DRI2CopyRegion(drawable->pDraw, &region,
DRI2BufferFakeFrontLeft, DRI2BufferFrontLeft);
@@ -156,7 +156,7 @@ __glXDRIdrawableWaitGL(__GLXdrawable *drawable)
box.y1 = 0;
box.x2 = private->width;
box.y2 = private->height;
- REGION_INIT(drawable->pDraw->pScreen, &region, &box, 0);
+ RegionInit(&region, &box, 0);
DRI2CopyRegion(drawable->pDraw, &region,
DRI2BufferFrontLeft, DRI2BufferFakeFrontLeft);
diff --git a/xorg-server/glx/glxdriswrast.c b/xorg-server/glx/glxdriswrast.c
index acdcc645c..fbda3cda5 100644
--- a/xorg-server/glx/glxdriswrast.c
+++ b/xorg-server/glx/glxdriswrast.c
@@ -329,7 +329,7 @@ __glXDRIscreenCreateDrawable(ClientPtr client,
gcvals[0].val = GXcopy;
ChangeGC(NullClient, private->gc, GCFunction, gcvals);
gcvals[1].val = FALSE;
- ChangeGC(NullClient, private->gc, GCFunction | GCGraphicsExposures, gcvals);
+ ChangeGC(NullClient, private->swapgc, GCFunction | GCGraphicsExposures, gcvals);
private->driDrawable =
(*driScreen->swrast->createNewDrawable)(driScreen->driScreen,
diff --git a/xorg-server/glx/glxext.c b/xorg-server/glx/glxext.c
index 349b0f983..9c99a5879 100644
--- a/xorg-server/glx/glxext.c
+++ b/xorg-server/glx/glxext.c
@@ -65,8 +65,8 @@ RESTYPE __glXSwapBarrierRes;
*/
xGLXSingleReply __glXReply;
-static int glxClientPrivateKeyIndex;
-static DevPrivateKey glxClientPrivateKey = &glxClientPrivateKeyIndex;
+static DevPrivateKeyRec glxClientPrivateKeyRec;
+#define glxClientPrivateKey (&glxClientPrivateKeyRec)
/*
** Client that called into GLX dispatch.
@@ -205,8 +205,8 @@ GLboolean __glXFreeContext(__GLXcontext *cx)
{
if (cx->idExists || cx->isCurrent) return GL_FALSE;
- if (cx->feedbackBuf) free(cx->feedbackBuf);
- if (cx->selectBuf) free(cx->selectBuf);
+ free(cx->feedbackBuf);
+ free(cx->selectBuf);
if (cx == __glXLastContext) {
__glXFlushContextCache();
}
@@ -323,10 +323,10 @@ glxClientCallback (CallbackListPtr *list,
}
}
- if (cl->returnBuf) free(cl->returnBuf);
- if (cl->largeCmdBuf) free(cl->largeCmdBuf);
- if (cl->currentContexts) free(cl->currentContexts);
- if (cl->GLClientextensions) free(cl->GLClientextensions);
+ free(cl->returnBuf);
+ free(cl->largeCmdBuf);
+ free(cl->currentContexts);
+ free(cl->GLClientextensions);
break;
default:
@@ -364,7 +364,7 @@ void GlxExtensionInit(void)
if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes)
return;
- if (!dixRequestPrivate(glxClientPrivateKey, sizeof (__GLXclientState)))
+ if (!dixRegisterPrivateKey(&glxClientPrivateKeyRec, PRIVATE_CLIENT, sizeof (__GLXclientState)))
return;
if (!AddCallback (&ClientStateCallback, glxClientCallback, 0))
return;
diff --git a/xorg-server/glx/glxscreens.c b/xorg-server/glx/glxscreens.c
index 4bd2eed5e..e3993bded 100644
--- a/xorg-server/glx/glxscreens.c
+++ b/xorg-server/glx/glxscreens.c
@@ -44,8 +44,8 @@
#include "glxext.h"
#include "protocol-versions.h"
-static int glxScreenPrivateKeyIndex;
-static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
+static DevPrivateKeyRec glxScreenPrivateKeyRec;
+#define glxScreenPrivateKey (&glxScreenPrivateKeyRec)
const char GLServerVersion[] = "1.4";
static const char GLServerExtensions[] =
@@ -352,6 +352,9 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
__GLXconfig *config;
int i;
+ if (!dixRegisterPrivateKey(&glxScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
+ return;
+
pGlxScreen->pScreen = pScreen;
pGlxScreen->GLextensions = xstrdup(GLServerExtensions);
pGlxScreen->GLXvendor = xstrdup(GLXServerVendorName);
diff --git a/xorg-server/glx/single2.c b/xorg-server/glx/single2.c
index 754cc0b86..ee6e64f07 100644
--- a/xorg-server/glx/single2.c
+++ b/xorg-server/glx/single2.c
@@ -272,10 +272,8 @@ char *__glXcombine_strings(const char *cext_string, const char *sext_string)
s2 = sext_string;
}
if (!combo_string || !s1) {
- if (combo_string)
- free(combo_string);
- if (s1)
- free(s1);
+ free(combo_string);
+ free(s1);
return NULL;
}
combo_string[0] = '\0';
diff --git a/xorg-server/glx/singlesize.c b/xorg-server/glx/singlesize.c
index 9e95dd3d3..d338886b4 100644
--- a/xorg-server/glx/singlesize.c
+++ b/xorg-server/glx/singlesize.c
@@ -1,193 +1,193 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <GL/gl.h>
-#include "glxserver.h"
-#include "singlesize.h"
-#include "indirect_size_get.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
-
-/*
-** These routines compute the size of variable-size returned parameters.
-** Unlike the similar routines that do the same thing for variable-size
-** incoming parameters, the samplegl library itself doesn't use these routines.
-** Hence, they are located here, in the GLX extension library.
-*/
-
-GLint __glReadPixels_size(GLenum format, GLenum type, GLint w, GLint h)
-{
- return __glXImageSize( format, type, 0, w, h, 1, 0, 0, 0, 0, 4 );
-}
-
-GLint __glGetMap_size(GLenum target, GLenum query)
-{
- GLint k, order=0, majorMinor[2];
-
- /*
- ** Assume target and query are both valid.
- */
- switch (target) {
- case GL_MAP1_COLOR_4:
- case GL_MAP1_NORMAL:
- case GL_MAP1_INDEX:
- case GL_MAP1_TEXTURE_COORD_1:
- case GL_MAP1_TEXTURE_COORD_2:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_MAP1_VERTEX_3:
- case GL_MAP1_VERTEX_4:
- switch (query) {
- case GL_COEFF:
- k = __glMap1d_size(target);
- CALL_GetMapiv( GET_DISPATCH(), (target, GL_ORDER, &order) );
- /*
- ** The query above might fail, but then order will be zero anyway.
- */
- return (order * k);
- case GL_DOMAIN:
- return 2;
- case GL_ORDER:
- return 1;
- }
- break;
- case GL_MAP2_COLOR_4:
- case GL_MAP2_NORMAL:
- case GL_MAP2_INDEX:
- case GL_MAP2_TEXTURE_COORD_1:
- case GL_MAP2_TEXTURE_COORD_2:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_MAP2_VERTEX_3:
- case GL_MAP2_VERTEX_4:
- switch (query) {
- case GL_COEFF:
- k = __glMap2d_size(target);
- majorMinor[0] = majorMinor[1] = 0;
- CALL_GetMapiv( GET_DISPATCH(), (target, GL_ORDER, majorMinor) );
- /*
- ** The query above might fail, but then majorMinor will be zeroes
- */
- return (majorMinor[0] * majorMinor[1] * k);
- case GL_DOMAIN:
- return 4;
- case GL_ORDER:
- return 2;
- }
- break;
- }
- return -1;
-}
-
-GLint __glGetMapdv_size(GLenum target, GLenum query)
-{
- return __glGetMap_size(target, query);
-}
-
-GLint __glGetMapfv_size(GLenum target, GLenum query)
-{
- return __glGetMap_size(target, query);
-}
-
-GLint __glGetMapiv_size(GLenum target, GLenum query)
-{
- return __glGetMap_size(target, query);
-}
-
-GLint __glGetPixelMap_size(GLenum map)
-{
- GLint size;
- GLenum query;
-
- switch (map) {
- case GL_PIXEL_MAP_I_TO_I:
- query = GL_PIXEL_MAP_I_TO_I_SIZE;
- break;
- case GL_PIXEL_MAP_S_TO_S:
- query = GL_PIXEL_MAP_S_TO_S_SIZE;
- break;
- case GL_PIXEL_MAP_I_TO_R:
- query = GL_PIXEL_MAP_I_TO_R_SIZE;
- break;
- case GL_PIXEL_MAP_I_TO_G:
- query = GL_PIXEL_MAP_I_TO_G_SIZE;
- break;
- case GL_PIXEL_MAP_I_TO_B:
- query = GL_PIXEL_MAP_I_TO_B_SIZE;
- break;
- case GL_PIXEL_MAP_I_TO_A:
- query = GL_PIXEL_MAP_I_TO_A_SIZE;
- break;
- case GL_PIXEL_MAP_R_TO_R:
- query = GL_PIXEL_MAP_R_TO_R_SIZE;
- break;
- case GL_PIXEL_MAP_G_TO_G:
- query = GL_PIXEL_MAP_G_TO_G_SIZE;
- break;
- case GL_PIXEL_MAP_B_TO_B:
- query = GL_PIXEL_MAP_B_TO_B_SIZE;
- break;
- case GL_PIXEL_MAP_A_TO_A:
- query = GL_PIXEL_MAP_A_TO_A_SIZE;
- break;
- default:
- return -1;
- }
- CALL_GetIntegerv( GET_DISPATCH(), (query, &size) );
- return size;
-}
-
-GLint __glGetPixelMapfv_size(GLenum map)
-{
- return __glGetPixelMap_size(map);
-}
-
-GLint __glGetPixelMapuiv_size(GLenum map)
-{
- return __glGetPixelMap_size(map);
-}
-
-GLint __glGetPixelMapusv_size(GLenum map)
-{
- return __glGetPixelMap_size(map);
-}
-
-GLint __glGetTexImage_size(GLenum target, GLint level, GLenum format,
- GLenum type, GLint width, GLint height, GLint depth)
-{
- return __glXImageSize( format, type, target, width, height, depth,
- 0, 0, 0, 0, 4 );
-}
+/*
+ * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+ * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice including the dates of first publication and
+ * either this permission notice or a reference to
+ * http://oss.sgi.com/projects/FreeB/
+ * shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Silicon Graphics, Inc.
+ * shall not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization from
+ * Silicon Graphics, Inc.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <GL/gl.h>
+#include "glxserver.h"
+#include "singlesize.h"
+#include "indirect_size_get.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+
+/*
+** These routines compute the size of variable-size returned parameters.
+** Unlike the similar routines that do the same thing for variable-size
+** incoming parameters, the samplegl library itself doesn't use these routines.
+** Hence, they are located here, in the GLX extension library.
+*/
+
+GLint __glReadPixels_size(GLenum format, GLenum type, GLint w, GLint h)
+{
+ return __glXImageSize( format, type, 0, w, h, 1, 0, 0, 0, 0, 4 );
+}
+
+GLint __glGetMap_size(GLenum target, GLenum query)
+{
+ GLint k, order=0, majorMinor[2];
+
+ /*
+ ** Assume target and query are both valid.
+ */
+ switch (target) {
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ switch (query) {
+ case GL_COEFF:
+ k = __glMap1d_size(target);
+ CALL_GetMapiv( GET_DISPATCH(), (target, GL_ORDER, &order) );
+ /*
+ ** The query above might fail, but then order will be zero anyway.
+ */
+ return order * k;
+ case GL_DOMAIN:
+ return 2;
+ case GL_ORDER:
+ return 1;
+ }
+ break;
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ switch (query) {
+ case GL_COEFF:
+ k = __glMap2d_size(target);
+ majorMinor[0] = majorMinor[1] = 0;
+ CALL_GetMapiv( GET_DISPATCH(), (target, GL_ORDER, majorMinor) );
+ /*
+ ** The query above might fail, but then majorMinor will be zeroes
+ */
+ return majorMinor[0] * majorMinor[1] * k;
+ case GL_DOMAIN:
+ return 4;
+ case GL_ORDER:
+ return 2;
+ }
+ break;
+ }
+ return -1;
+}
+
+GLint __glGetMapdv_size(GLenum target, GLenum query)
+{
+ return __glGetMap_size(target, query);
+}
+
+GLint __glGetMapfv_size(GLenum target, GLenum query)
+{
+ return __glGetMap_size(target, query);
+}
+
+GLint __glGetMapiv_size(GLenum target, GLenum query)
+{
+ return __glGetMap_size(target, query);
+}
+
+GLint __glGetPixelMap_size(GLenum map)
+{
+ GLint size;
+ GLenum query;
+
+ switch (map) {
+ case GL_PIXEL_MAP_I_TO_I:
+ query = GL_PIXEL_MAP_I_TO_I_SIZE;
+ break;
+ case GL_PIXEL_MAP_S_TO_S:
+ query = GL_PIXEL_MAP_S_TO_S_SIZE;
+ break;
+ case GL_PIXEL_MAP_I_TO_R:
+ query = GL_PIXEL_MAP_I_TO_R_SIZE;
+ break;
+ case GL_PIXEL_MAP_I_TO_G:
+ query = GL_PIXEL_MAP_I_TO_G_SIZE;
+ break;
+ case GL_PIXEL_MAP_I_TO_B:
+ query = GL_PIXEL_MAP_I_TO_B_SIZE;
+ break;
+ case GL_PIXEL_MAP_I_TO_A:
+ query = GL_PIXEL_MAP_I_TO_A_SIZE;
+ break;
+ case GL_PIXEL_MAP_R_TO_R:
+ query = GL_PIXEL_MAP_R_TO_R_SIZE;
+ break;
+ case GL_PIXEL_MAP_G_TO_G:
+ query = GL_PIXEL_MAP_G_TO_G_SIZE;
+ break;
+ case GL_PIXEL_MAP_B_TO_B:
+ query = GL_PIXEL_MAP_B_TO_B_SIZE;
+ break;
+ case GL_PIXEL_MAP_A_TO_A:
+ query = GL_PIXEL_MAP_A_TO_A_SIZE;
+ break;
+ default:
+ return -1;
+ }
+ CALL_GetIntegerv( GET_DISPATCH(), (query, &size) );
+ return size;
+}
+
+GLint __glGetPixelMapfv_size(GLenum map)
+{
+ return __glGetPixelMap_size(map);
+}
+
+GLint __glGetPixelMapuiv_size(GLenum map)
+{
+ return __glGetPixelMap_size(map);
+}
+
+GLint __glGetPixelMapusv_size(GLenum map)
+{
+ return __glGetPixelMap_size(map);
+}
+
+GLint __glGetTexImage_size(GLenum target, GLint level, GLenum format,
+ GLenum type, GLint width, GLint height, GLint depth)
+{
+ return __glXImageSize( format, type, target, width, height, depth,
+ 0, 0, 0, 0, 4 );
+}
diff --git a/xorg-server/glx/xfont.c b/xorg-server/glx/xfont.c
index abcad1240..73b546d0e 100644
--- a/xorg-server/glx/xfont.c
+++ b/xorg-server/glx/xfont.c
@@ -97,9 +97,7 @@ static int __glXMakeBitmapFromGlyph(FontPtr font, CharInfoPtr pci)
pci->metrics.characterWidth, 0,
allocbuf ? allocbuf : buf) );
- if (allocbuf) {
- free(allocbuf);
- }
+ free(allocbuf);
return Success;
#undef __GL_CHAR_BUF_SIZE
}