From 2c7c19769a989f2161754538aa6ae232420ac80e Mon Sep 17 00:00:00 2001 From: "Sinisa@sinisa.nasamreza.org" <> Date: Mon, 2 Dec 2002 15:12:56 +0200 Subject: [PATCH 1/3] moving fix elsewhere ... --- sql/sql_show.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 028d6b055ff..a8567112fe9 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1145,7 +1145,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) switch (variables[i].type){ case SHOW_LONG: case SHOW_LONG_CONST: - net_store_data(&packet2,(longlong) *(ulong*) variables[i].value); + net_store_data(&packet2,(int32) *(ulong*) variables[i].value); break; case SHOW_BOOL: net_store_data(&packet2,(ulong) *(bool*) variables[i].value ? From 9b331dc3544d03e2d1613b4fb059335527b46cb5 Mon Sep 17 00:00:00 2001 From: "Sinisa@sinisa.nasamreza.org" <> Date: Mon, 2 Dec 2002 15:33:16 +0200 Subject: [PATCH 2/3] Proper fix for SHOW VARS on 64-bit systems --- sql/mysqld.cc | 2 +- sql/sql_show.cc | 5 ++++- sql/structs.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index f67fa8afd8c..6aa41f9f800 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3110,7 +3110,7 @@ struct show_var_st init_vars[]= { #endif {"interactive_timeout", (char*) &net_interactive_timeout, SHOW_LONG}, {"join_buffer_size", (char*) &join_buff_size, SHOW_LONG}, - {"key_buffer_size", (char*) &keybuff_size, SHOW_LONG}, + {"key_buffer_size", (char*) &keybuff_size, SHOW_LONG_AS_LONGLONG}, {"language", language, SHOW_CHAR}, {"large_files_support", (char*) &opt_large_files, SHOW_BOOL}, #ifdef HAVE_MLOCKALL diff --git a/sql/sql_show.cc b/sql/sql_show.cc index a8567112fe9..12979f77e56 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1145,7 +1145,10 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) switch (variables[i].type){ case SHOW_LONG: case SHOW_LONG_CONST: - net_store_data(&packet2,(int32) *(ulong*) variables[i].value); + net_store_data(&packet2,(uint32) *(ulong*) variables[i].value); + break; + case SHOW_LONG_AS_LONGLONG: + net_store_data(&packet2,(longlong) *(ulong*) variables[i].value); break; case SHOW_BOOL: net_store_data(&packet2,(ulong) *(bool*) variables[i].value ? diff --git a/sql/structs.h b/sql/structs.h index 36f503312c0..90924b842d6 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -125,7 +125,7 @@ typedef struct { enum SHOW_TYPE { SHOW_LONG,SHOW_CHAR,SHOW_INT,SHOW_CHAR_PTR,SHOW_BOOL, SHOW_MY_BOOL,SHOW_OPENTABLES,SHOW_STARTTIME,SHOW_QUESTION, - SHOW_LONG_CONST, SHOW_INT_CONST, SHOW_HAVE}; + SHOW_LONG_CONST, SHOW_INT_CONST, SHOW_HAVE, SHOW_LONG_AS_LONGLONG}; enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED}; From d527bfbd5974261b42192e1a07e86177113c9229 Mon Sep 17 00:00:00 2001 From: "Sinisa@sinisa.nasamreza.org" <> Date: Wed, 4 Dec 2002 20:51:18 +0200 Subject: [PATCH 3/3] A fix for double free'd pointer bug ... --- .bzrignore | 2 ++ sql/sql_table.cc | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.bzrignore b/.bzrignore index 4a707ae05df..5b35d1f6611 100644 --- a/.bzrignore +++ b/.bzrignore @@ -331,3 +331,5 @@ bdb/dist/autom4te.cache/traces.0 innobase/autom4te.cache/output.0 innobase/autom4te.cache/requests innobase/autom4te.cache/traces.0 +innobase/stamp-h1 +stamp-h1 diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 0a09b6232e8..ec866b927e6 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1528,8 +1528,14 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, /* We changed a temporary table */ if (error) { + /* + * The following function call will also free a + * new_table pointer. + * Therefore, here new_table pointer is not free'd as it is + * free'd in close_temporary() which is called by by the + * close_temporary_table() function. + */ close_temporary_table(thd,new_db,tmp_name); - my_free((gptr) new_table,MYF(0)); goto err; } /* Close lock if this is a transactional table */