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 /nx-X11/programs/Xserver/GL/glx | |
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.
Diffstat (limited to 'nx-X11/programs/Xserver/GL/glx')
-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); - } /* |