aboutsummaryrefslogtreecommitdiff
path: root/odb/mssql/object-statements.txx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-03-07 10:21:07 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-03-07 10:21:07 +0200
commitc1b8b6f16e4881e57aa0da67e6f09ad71ee6099d (patch)
treeda1f5c81451d5a75f5ed12ae6752eb3feac969f7 /odb/mssql/object-statements.txx
parent2534b3aa626d6a426559c556b20faf7b69b47717 (diff)
Use RAII to free select statement results
Diffstat (limited to 'odb/mssql/object-statements.txx')
-rw-r--r--odb/mssql/object-statements.txx6
1 files changed, 5 insertions, 1 deletions
diff --git a/odb/mssql/object-statements.txx b/odb/mssql/object-statements.txx
index c8753d2..01249d9 100644
--- a/odb/mssql/object-statements.txx
+++ b/odb/mssql/object-statements.txx
@@ -87,6 +87,10 @@ namespace odb
if (!object_traits::find_ (*this, l.id))
throw object_not_persistent ();
+ // Our find_() version delays result freeing.
+ //
+ auto_result ar (*find_);
+
object_traits::callback (db, *l.obj, callback_event::pre_load);
// Our calls to init/load below can result in additional delayed
@@ -95,7 +99,7 @@ namespace odb
//
object_traits::init (*l.obj, image (), &db);
find_->stream_result ();
- find_->free_result (); // Our find_() version delays result freeing.
+ ar.free ();
object_traits::load_ (*this, *l.obj); // Load containers, etc.
if (!delayed_.empty ())