aboutsummaryrefslogtreecommitdiff
path: root/odb/sqlite/object-statements.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-08-18 11:38:40 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-08-18 11:38:40 +0200
commit35c3d273bbf1bd8c9c41ac1c3d91f150df0eb280 (patch)
tree7ff18feae934977f4c56a650f29018943686ed63 /odb/sqlite/object-statements.ixx
parent821721c0d4fa9d6246a665b6d585c1574ed4c80f (diff)
Fix custom recursive loading in post_load callback
Before we called the callback while holding the statements locked. As a result, if the callback tried to load another object of this type, it failed. Now we unlock the statements (since we have completely loaded the object from ODB's point of view) and then call the callback. The callback test has been updated to test this situation.
Diffstat (limited to 'odb/sqlite/object-statements.ixx')
-rw-r--r--odb/sqlite/object-statements.ixx16
1 files changed, 16 insertions, 0 deletions
diff --git a/odb/sqlite/object-statements.ixx b/odb/sqlite/object-statements.ixx
index e1ae3ef..f629ea7 100644
--- a/odb/sqlite/object-statements.ixx
+++ b/odb/sqlite/object-statements.ixx
@@ -8,6 +8,22 @@ namespace odb
namespace sqlite
{
//
+ // auto_unlock
+ //
+ inline object_statements_base::auto_unlock::
+ auto_unlock (object_statements_base& s)
+ : s_ (s)
+ {
+ s_.unlock ();
+ }
+
+ inline object_statements_base::auto_unlock::
+ ~auto_unlock ()
+ {
+ s_.lock ();
+ }
+
+ //
// auto_lock
//
template <typename T>