summaryrefslogtreecommitdiff
path: root/sql-common
diff options
context:
space:
mode:
authorTatiana A. Nurnberg <azundris@mysql.com>2009-08-31 10:01:13 -0700
committerTatiana A. Nurnberg <azundris@mysql.com>2009-08-31 10:01:13 -0700
commitd85148d84c88adebddbe4983efffdb5101d7963d (patch)
tree2d0569e8720c8be597ca56d2904c157d37c7023f /sql-common
parent1ba25ae47caace207cda0be2b7994a1a845e6cce (diff)
downloadmariadb-git-d85148d84c88adebddbe4983efffdb5101d7963d.tar.gz
Bug#35132: MySQLadmin --wait ping always crashes on Windows systems
Failing to connect would release parts of the MYSQL struct. We would then proceed to try again to connect without re- initializing the struct. We prevent the unwanted freeing of data we'll still need now. client/mysqladmin.cc: Losing a connection (or not even getting on in the first place) should not trash the MYSQL-struct. Add a lot of comments. Rewrite re-connection fu. sql-common/client.c: Assert against bad parameters usually caused by de-initing a MYSQL-struct without re-initing it again before re-use.
Diffstat (limited to 'sql-common')
-rw-r--r--sql-common/client.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sql-common/client.c b/sql-common/client.c
index 8f1f4a1fd5a..89de74ebd58 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -417,6 +417,15 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
int i;
/*
+ If this is NULL, somebody freed the MYSQL* options. mysql_close()
+ is a good candidate. We don't just silently (re)set it to
+ def_shared_memory_base_name as that would create really confusing/buggy
+ behavior if the user passed in a different name on the command-line or
+ in a my.cnf.
+ */
+ DBUG_ASSERT(shared_memory_base_name != NULL);
+
+ /*
get enough space base-name + '_' + longest suffix we might ever send
*/
if (!(tmp= (char *)my_malloc(strlen(shared_memory_base_name) + 32L, MYF(MY_FAE))))