diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2019-06-18 23:36:45 +0200 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2019-06-19 00:49:57 +0200 |
commit | bffdacc48a6bd49e4ac1b4ce5d2fcc8eecdb811c (patch) | |
tree | 428d5c1bffd4b5e97df723f92d6335b9494cb778 | |
parent | b5eb7c76e9758973a84a060d47b044f2acc980d3 (diff) | |
download | nx-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.c | 4 |
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); - } /* |