diff options
author | unknown <konstantin@mysql.com> | 2006-04-12 18:30:54 +0400 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2006-04-12 18:30:54 +0400 |
commit | e46a193be82ba9956ac2db8e015fb528c84842da (patch) | |
tree | 96d659fbe401a4fa1269027a7637692d3bfc1258 /sql/sql_prepare.cc | |
parent | 10633fd8397f8450b5076bb98f336f6d20967b5d (diff) | |
parent | f37d610147cbd51bde10aceac4d18e2f1c415e68 (diff) | |
download | mariadb-git-e46a193be82ba9956ac2db8e015fb528c84842da.tar.gz |
Merge mysql.com:/opt/local/work/mysql-4.1-16365
into mysql.com:/opt/local/work/mysql-5.0-merge
sql/set_var.cc:
Auto merged
mysql-test/r/ps.result:
Manual merge.
mysql-test/t/ps.test:
Manual merge.
sql/item_row.cc:
Manual merge.
sql/item_row.h:
Manual merge.
sql/mysql_priv.h:
Manual merge.
sql/mysqld.cc:
Manual merge.
sql/set_var.h:
Manual merge.
sql/sql_class.cc:
Manual merge.
sql/sql_class.h:
Manual merge.
sql/sql_prepare.cc:
Manual merge.
Diffstat (limited to 'sql/sql_prepare.cc')
-rw-r--r-- | sql/sql_prepare.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index ac0687b488d..5a15e67da8e 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1848,8 +1848,11 @@ void mysql_stmt_prepare(THD *thd, const char *packet, uint packet_length) if (thd->stmt_map.insert(stmt)) { - delete stmt; - DBUG_VOID_RETURN; /* out of memory */ + /* + The error is set in the insert. The statement itself + will be also deleted there (this is how the hash works). + */ + DBUG_VOID_RETURN; } /* Reset warnings from previous command */ @@ -2026,9 +2029,14 @@ void mysql_sql_stmt_prepare(THD *thd) DBUG_VOID_RETURN; /* out of memory */ } - if (stmt->set_name(name) || thd->stmt_map.insert(stmt)) + if (thd->stmt_map.insert(stmt)) { - delete stmt; + /* The statement is deleted and an error is set if insert fails */ + DBUG_VOID_RETURN; + } + if (stmt->set_name(name)) + { + thd->stmt_map.erase(stmt); DBUG_VOID_RETURN; } |