diff options
author | unknown <paul@teton.kitebird.com> | 2003-12-23 09:47:02 -0600 |
---|---|---|
committer | unknown <paul@teton.kitebird.com> | 2003-12-23 09:47:02 -0600 |
commit | f27222ea457d71214881ab2081fd81c7e5291978 (patch) | |
tree | d12655ff6617076ddcf9e764d9b9e7cc273b65c6 | |
parent | da5328ef74a85eb778830dcdf69bb51c67992ea0 (diff) | |
parent | 603ac2474e9f14cf6c84fb3273a9c2e8a0d3478e (diff) | |
download | mariadb-git-f27222ea457d71214881ab2081fd81c7e5291978.tar.gz |
Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
libmysql/libmysql.c:
Auto merged
-rw-r--r-- | libmysql/libmysql.c | 16 | ||||
-rw-r--r-- | sql/sql_class.cc | 2 | ||||
-rw-r--r-- | sql/sql_class.h | 3 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 2 |
4 files changed, 12 insertions, 11 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 783082c6b03..977657f8998 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2035,14 +2035,6 @@ int cli_stmt_execute(MYSQL_STMT *stmt) uint null_count; my_bool result; -#ifdef CHECK_EXTRA_ARGUMENTS - if (!stmt->param_buffers) - { - /* Parameters exists, but no bound buffers */ - set_stmt_error(stmt, CR_NOT_ALL_PARAMS_BOUND, unknown_sqlstate); - DBUG_RETURN(1); - } -#endif net_clear(net); /* Sets net->write_pos */ /* Reserve place for null-marker bytes */ null_count= (stmt->param_count+7) /8; @@ -2099,6 +2091,14 @@ int STDCALL mysql_execute(MYSQL_STMT *stmt) set_stmt_error(stmt, CR_NO_PREPARE_STMT, unknown_sqlstate); DBUG_RETURN(1); } +#ifdef CHECK_EXTRA_ARGUMENTS + if (stmt->param_count && !stmt->param_buffers) + { + /* Parameters exists, but no bound buffers */ + set_stmt_error(stmt, CR_NOT_ALL_PARAMS_BOUND, unknown_sqlstate); + DBUG_RETURN(1); + } +#endif if ((*stmt->mysql->methods->stmt_execute)(stmt)) DBUG_RETURN(1); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 12f0cc4ca72..60220ffc889 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -336,6 +336,8 @@ THD::~THD() #ifndef DBUG_OFF dbug_sentry = THD_SENTRY_GONE; #endif + /* Reset stmt_backup.mem_root to not double-free memory from thd.mem_root */ + init_alloc_root(&stmt_backup.mem_root, 0, 0); DBUG_VOID_RETURN; } diff --git a/sql/sql_class.h b/sql/sql_class.h index c1cd65edf76..5390e8a4ac4 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -582,8 +582,7 @@ public: Statement_map stmt_map; /* keeps THD state while it is used for active statement - Note, that double free_root() is safe, so we don't need to do any - special cleanup for it in THD destructor. + Note: we perform special cleanup for it in THD destructor. */ Statement stmt_backup; /* diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index a513e445db9..5d6ab165641 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1193,7 +1193,7 @@ Prepared_statement::Prepared_statement(THD *thd_arg) #ifndef EMBEDDED_LIBRARY setup_params= insert_params; // not fully qualified query #else - setup_params_data= setup_params_data; + setup_params_data= ::setup_params_data; #endif } |