diff --git a/dbug/dbug.c b/dbug/dbug.c index 30ad6c2c6d1..8fa5ed9af6b 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -1517,10 +1517,7 @@ void _db_end_() while ((discard= cs->stack)) { if (discard == &init_settings) - { - FreeState (cs, discard, 0); break; - } cs->stack= discard->next; FreeState(cs, discard, 1); } diff --git a/mysql-test/r/variables_debug.result b/mysql-test/r/variables_debug.result index 85eaf34b033..d578fa957fc 100644 --- a/mysql-test/r/variables_debug.result +++ b/mysql-test/r/variables_debug.result @@ -1,3 +1,4 @@ +SET @old_debug = @@GLOBAL.debug; set debug= 'T'; select @@debug; @@debug @@ -22,4 +23,5 @@ SET GLOBAL debug=''; SELECT @@global.debug; @@global.debug +SET GLOBAL debug=@old_debug; End of 5.1 tests diff --git a/mysql-test/t/variables_debug.test b/mysql-test/t/variables_debug.test index 8f2bde7ae42..12f5d2e6ca5 100644 --- a/mysql-test/t/variables_debug.test +++ b/mysql-test/t/variables_debug.test @@ -1,5 +1,7 @@ --source include/have_debug.inc +SET @old_debug = @@GLOBAL.debug; + # # Bug#34678 @@debug variable's incremental mode # @@ -21,5 +23,6 @@ SELECT @@global.debug; SET GLOBAL debug=''; SELECT @@global.debug; +SET GLOBAL debug=@old_debug; --echo End of 5.1 tests diff --git a/sql/set_var.cc b/sql/set_var.cc index f7d9d9df42e..8f0ad93ba43 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -4239,10 +4239,15 @@ bool sys_var_thd_dbug::check(THD *thd, set_var *var) bool sys_var_thd_dbug::update(THD *thd, set_var *var) { + char buf[256]; + String str(buf, sizeof(buf), system_charset_info), *res; + + res= var->value->val_str(&str); + if (var->type == OPT_GLOBAL) - DBUG_SET_INITIAL(var ? var->value->str_value.c_ptr() : ""); + DBUG_SET_INITIAL(res ? res->c_ptr() : ""); else - DBUG_SET(var ? var->value->str_value.c_ptr() : ""); + DBUG_SET(res ? res->c_ptr() : ""); return 0; }