From b8af4ab216ea6efd433ebdd2da4911978bd22d88 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 20 May 2010 10:31:03 +0400 Subject: Bug#52884 mysql-test-run does not work with --debug option Server crashes on 64bit linux with 'double free or corruption' message, on 32bit mysql-test-run silently fails on bootstrap stage. The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. Additional fix: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. dbug/dbug.c: The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. mysql-test/r/variables_debug.result: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. mysql-test/t/variables_debug.test: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. sql/set_var.cc: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. --- sql/set_var.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'sql/set_var.cc') 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; } -- cgit v1.2.1