diff --git a/ChangeLog b/ChangeLog index bb08857..5971e66 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-12-07 Giampiero Giancipoli + * libvncclient/vncviewer.c: plug memory leaks + +2005-12-07 Johannes E. Schindelin + * client_examples/SDLvncviewer.c: use unicode to determine the keysym + (much more reliable than the old method) + 2005-11-25 Karl Runge * configure.ac: disable tightvnc-filetransfer if no libpthread. add --without-pthread option. diff --git a/libvncclient/vncviewer.c b/libvncclient/vncviewer.c index 31b4d3d..5ef2d9a 100644 --- a/libvncclient/vncviewer.c +++ b/libvncclient/vncviewer.c @@ -159,11 +159,9 @@ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel, client->decompStreamInited = FALSE; #endif -#ifdef LIBVNCSERVER_HAVE_LIBZ #ifdef LIBVNCSERVER_HAVE_LIBJPEG memset(client->zlibStreamActive,0,sizeof(rfbBool)*4); client->jpegSrcManager = NULL; -#endif #endif client->HandleCursorPos = DummyPoint; @@ -254,6 +252,23 @@ rfbBool rfbInitClient(rfbClient* client,int* argc,char** argv) { } void rfbClientCleanup(rfbClient* client) { + int i; + + for ( i = 0; i < 4; i++ ) { + if (client->zlibStreamActive[i] == TRUE ) { + if (inflateEnd (&client->zlibStream[i]) != Z_OK && + client->zlibStream[i].msg != NULL) + rfbClientLog("inflateEnd: %s\n", client->zlibStream[i].msg); + } + } + + if ( client->decompStreamInited == TRUE ) { + if (inflateEnd (&client->decompStream) != Z_OK && + client->decompStream.msg != NULL) + rfbClientLog("inflateEnd: %s\n", client->decompStream.msg ); + } + + free(client->desktopName); free(client->serverHost); free(client); } diff --git a/rfb/rfbclient.h b/rfb/rfbclient.h index 8759b0e..a7d77bb 100644 --- a/rfb/rfbclient.h +++ b/rfb/rfbclient.h @@ -273,6 +273,7 @@ extern int WaitForMessage(rfbClient* client,unsigned int usecs); /* vncviewer.c */ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel,int bytesPerPixel); rfbBool rfbInitClient(rfbClient* client,int* argc,char** argv); +/* rfbClientCleanup() does not touch client->frameBuffer */ void rfbClientCleanup(rfbClient* client); #endif