aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2019-06-18 23:36:45 +0200
committerUlrich Sibiller <uli42@gmx.de>2019-06-19 00:49:57 +0200
commitbffdacc48a6bd49e4ac1b4ce5d2fcc8eecdb811c (patch)
tree428d5c1bffd4b5e97df723f92d6335b9494cb778
parentb5eb7c76e9758973a84a060d47b044f2acc980d3 (diff)
downloadnx-libs-bffdacc48a6bd49e4ac1b4ce5d2fcc8eecdb811c.tar.gz
nx-libs-bffdacc48a6bd49e4ac1b4ce5d2fcc8eecdb811c.tar.bz2
nx-libs-bffdacc48a6bd49e4ac1b4ce5d2fcc8eecdb811c.zip
glxext.c: fix another memory leak
==10226== 3,337 bytes in 1 blocks are definitely lost in loss record 295 of 307 ==10226== at 0x483577F: malloc (vg_replace_malloc.c:299) ==10226== by 0x6281DB9: strdup (strdup.c:42) ==10226== by 0x2ABA9E: __glXClientInfo (glxcmds.c:2170) ==10226== by 0x17CA3E: __glXDispatch (NXglxext.c:128) ==10226== by 0x16EE77: Dispatch (NXdispatch.c:476) ==10226== by 0x14DCE0: main (main.c:353) There's no point in trying to free cl->* after memset(0). This one is a bug that is found identically in xorg upstream and has only been fixed during rework of the whole client resource freeing stuff. So we fix it in glxext.c.
-rw-r--r--nx-X11/programs/Xserver/GL/glx/glxext.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/GL/glx/glxext.c b/nx-X11/programs/Xserver/GL/glx/glxext.c
index e92e605fa..4f2d2082d 100644
--- a/nx-X11/programs/Xserver/GL/glx/glxext.c
+++ b/nx-X11/programs/Xserver/GL/glx/glxext.c
@@ -64,6 +64,7 @@ static void ResetClientState(int clientIndex)
if (cl->returnBuf) free(cl->returnBuf);
if (cl->largeCmdBuf) free(cl->largeCmdBuf);
if (cl->currentContexts) free(cl->currentContexts);
+ if (cl->GLClientextensions) free(cl->GLClientextensions);
memset(cl, 0, sizeof(__GLXclientState));
/*
** By default, assume that the client supports
@@ -71,9 +72,6 @@ static void ResetClientState(int clientIndex)
*/
cl->GLClientmajorVersion = 1;
cl->GLClientminorVersion = 0;
- if (cl->GLClientextensions)
- free(cl->GLClientextensions);
-
}
/*