From 52f0d3fbe1c01d8b140a70c09f4ffc58c371aa6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Mon, 9 Nov 2015 02:29:10 +0000 Subject: [PATCH] Fixing memory overcommitting , see #431 Also some code clean up --- lib/MySQL_Thread.cpp | 2 +- lib/mysql_data_stream.cpp | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 52fbe539c..147d7dbc8 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -1272,7 +1272,7 @@ struct pollfd * MySQL_Thread::get_pollfd(unsigned int i) { } void MySQL_Thread::poll_listener_add(int sock) { - MySQL_Data_Stream *listener_DS = new MySQL_Data_Stream; + MySQL_Data_Stream *listener_DS = new MySQL_Data_Stream(); listener_DS->myds_type=MYDS_LISTENER; listener_DS->fd=sock; diff --git a/lib/mysql_data_stream.cpp b/lib/mysql_data_stream.cpp index bfe554d7f..02c523c5b 100644 --- a/lib/mysql_data_stream.cpp +++ b/lib/mysql_data_stream.cpp @@ -51,7 +51,8 @@ static void __dump_pkt(const char *func, unsigned char *_ptr, unsigned int len) } #define queue_destroy(_q) { \ - free(_q.buffer); \ + if (_q.buffer) free(_q.buffer); \ + _q.buffer=NULL; \ } #define queue_zero(_q) { \ @@ -231,6 +232,10 @@ void MySQL_Data_Stream::init() { if (PSarrayOUTpending==NULL) PSarrayOUTpending= new PtrSizeArray(); if (resultset==NULL) resultset = new PtrSizeArray(); } + if (myds_type!=MYDS_FRONTEND) { + queue_destroy(queueIN); + queue_destroy(queueOUT); + } } // this function initializes a MySQL_Data_Stream with arguments @@ -407,13 +412,10 @@ int MySQL_Data_Stream::write_to_net_poll() { int MySQL_Data_Stream::read_pkts() { - { - int rc=0; - int r=0; - while((r=buffer2array())) rc+=r; - return rc; - - } + int rc=0; + int r=0; + while((r=buffer2array())) rc+=r; + return rc; }