summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <konstantin@oak.local>2003-12-23 15:38:19 +0300
committerunknown <konstantin@oak.local>2003-12-23 15:38:19 +0300
commit923af04fc1598cdbbe006b2995dfba5fd5de2ff8 (patch)
treee34c4d2278591bdb49287ed082529083e721e60e
parent37d11ff85869388e71659c298816e9ff390a2ac3 (diff)
downloadmariadb-git-923af04fc1598cdbbe006b2995dfba5fd5de2ff8.tar.gz
short patch for bug #2184 'Prepared statements in embedded library was
broken with recent changes' (attempt 2). Adding Statement_core is better because: - set_statement() code is shorter and you don't need to modify it when adding new members to Statement_core - a bit faster (you don't have virtual call and don't free_root() twice) Do that short patch instead in hope that set_statement() will be sooner or later removed entirely sql/sql_class.cc: short patch for bug #2184 'Prepared statements in embedded library was broken with recent changes' sql/sql_class.h: short patch for bug #2184 'Prepared statements in embedded library was broken with recent changes'
-rw-r--r--sql/sql_class.cc2
-rw-r--r--sql/sql_class.h3
2 files changed, 3 insertions, 2 deletions
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;
/*