summary refs log tree commit diff
path: root/src/libstore/db.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/db.cc')
-rw-r--r--src/libstore/db.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libstore/db.cc b/src/libstore/db.cc
index 4a815a5f90..82211bd1de 100644
--- a/src/libstore/db.cc
+++ b/src/libstore/db.cc
@@ -33,11 +33,9 @@ Transaction::Transaction()
 
 
 Transaction::Transaction(Database & db)
+    : txn(0)
 {
-    db.requireEnv();
-    try {
-        db.env->txn_begin(0, &txn, 0);
-    } catch (DbException e) { rethrow(e); }
+    begin(db);
 }
 
 
@@ -47,6 +45,16 @@ Transaction::~Transaction()
 }
 
 
+void Transaction::begin(Database & db)
+{
+    assert(txn == 0);
+    db.requireEnv();
+    try {
+        db.env->txn_begin(0, &txn, 0);
+    } catch (DbException e) { rethrow(e); }
+}
+
+
 void Transaction::commit()
 {
     if (!txn) throw Error("commit called on null transaction");