From fdb093fc476af146feaa6d4403db0c25bb6484d8 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Dec 2002 16:38:49 +0200 Subject: Copy arguments given to mysql_server_init() Made keybuff_size longlong (To make show variables work similar on 32 and 64 bit systems) Fixed some 'not initalized variable errors' in multi-table-update. Fixed memory leak in multi-table-update. Now all tests works under valgrind without any errors. libmysqld/lib_sql.cc: Copy arguments given to mysql_server_init() mysql-test/r/temp_table.result: Update test results (after merge form 3.23) sql/handler.cc: Made keybuff_size longlong sql/mysql_priv.h: Made keybuff_size longlong sql/mysqld.cc: Made keybuff_size longlong sql/set_var.cc: Made keybuff_size longlong sql/set_var.h: Made keybuff_size longlong sql/sql_select.cc: Simple cleanup sql/sql_select.h: Make TMP_TABLE_PARAM to be allocated through Sql_alloc sql/sql_update.cc: Fixed some 'not initalized variable errors' in multi-table-update. Fixed memory leak in multi-table-update --- sql/sql_update.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'sql/sql_update.cc') diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 887d4e0acc0..4eab38bebad 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -412,9 +412,10 @@ end: multi_update::multi_update(THD *thd_arg, TABLE_LIST *table_list, List *field_list, List *value_list, enum enum_duplicates handle_duplicates_arg) - :all_tables(table_list), thd(thd_arg), tmp_tables(0), updated(0), - found(0), fields(field_list), values(value_list), table_count(0), - handle_duplicates(handle_duplicates_arg), do_update(1) + :all_tables(table_list), update_tables(0), thd(thd_arg), tmp_tables(0), + updated(0), found(0), fields(field_list), values(value_list), + table_count(0), copy_field(0), handle_duplicates(handle_duplicates_arg), + do_update(1), trans_safe(0) {} @@ -594,9 +595,14 @@ multi_update::~multi_update() if (tmp_tables) { - for (uint counter = 0; counter < table_count; counter++) - if (tmp_tables[counter]) - free_tmp_table(thd,tmp_tables[counter]); + for (uint cnt = 0; cnt < table_count; cnt++) + { + if (tmp_tables[cnt]) + { + free_tmp_table(thd, tmp_tables[cnt]); + tmp_table_param[cnt].cleanup(); + } + } } if (copy_field) delete [] copy_field; -- cgit v1.2.1