From 9542fdc4434c3af3eaed91bf10e5b487044d8cc7 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 7 Mar 2012 10:21:07 +0200 Subject: Use RAII to free select statement results --- odb/mysql/object-result.txx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'odb/mysql/object-result.txx') diff --git a/odb/mysql/object-result.txx b/odb/mysql/object-result.txx index 81770c3..8144578 100644 --- a/odb/mysql/object-result.txx +++ b/odb/mysql/object-result.txx @@ -21,6 +21,8 @@ namespace odb object_result_impl:: ~object_result_impl () { + if (!this->end_) + statement_->free_result (); } template @@ -115,6 +117,9 @@ namespace odb this->end_ = count_ > statement_->result_size (); else fetch (); + + if (this->end_) + statement_->free_result (); } template @@ -193,7 +198,10 @@ namespace odb statement_->cache (); if (count_ >= statement_->result_size ()) + { + statement_->free_result (); this->end_ = true; + } } } @@ -215,6 +223,8 @@ namespace odb object_result_impl_no_id:: ~object_result_impl_no_id () { + if (!this->end_) + statement_->free_result (); } template @@ -260,6 +270,9 @@ namespace odb this->end_ = count_ > statement_->result_size (); else fetch (); + + if (this->end_) + statement_->free_result (); } template @@ -333,7 +346,10 @@ namespace odb statement_->cache (); if (count_ >= statement_->result_size ()) + { + statement_->free_result (); this->end_ = true; + } } } -- cgit v1.1