aboutsummaryrefslogtreecommitdiff
path: root/nx-X11
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 /nx-X11
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.
Diffstat (limited to 'nx-X11')
-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);
-
}
/*