Below is the list of changes that have just been committed into a local
5.0 repository of iggy. When iggy does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2008-01-31 19:17:19-05:00, iggy@alf.(none) +1 -0
Bug#26243 mysql command line crash after control-c
- Avoid memory cleanup race in shutdown signal handler.
client/mysql.cc@stripped, 2008-01-31 19:17:18-05:00, iggy@alf.(none) +8 -0
Bug#26243 mysql command line crash after control-c
- signal handler and the thread spawned by Windows to deal with the
control-c race to call mysql_end(). All the new thread to call
mysql_end().
diff -Nrup a/client/mysql.cc b/client/mysql.cc
--- a/client/mysql.cc 2008-01-30 16:51:37 -05:00
+++ b/client/mysql.cc 2008-01-31 19:17:18 -05:00
@@ -1219,12 +1219,20 @@ sig_handler mysql_sigint(int sig)
/* terminate if no query being executed, or we already tried interrupting */
if (!executing_query || interrupted_query++)
+#if !defined(__WIN__) && !defined(_WIN32) && !defined(_WIN64)
mysql_end(sig);
+#else
+ return;
+#endif
kill_mysql= mysql_init(kill_mysql);
if (!mysql_real_connect(kill_mysql,current_host, current_user, opt_password,
"", opt_mysql_port, opt_mysql_unix_port,0))
+#if !defined(__WIN__) && !defined(_WIN32) && !defined(_WIN64)
mysql_end(sig);
+#else
+ return;
+#endif
/* kill_buffer is always big enough because max length of %lu is 15 */
sprintf(kill_buffer, "KILL /*!50000 QUERY */ %lu", mysql_thread_id(&mysql));
mysql_real_query(kill_mysql, kill_buffer, strlen(kill_buffer));