From 3f3ea3c594b3bd8d6309a200301efb226cfadbce Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Fri, 29 Jun 2012 02:07:24 -0700 Subject: [PATCH] Fix the bug Jed reported. --- src/Transaction.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Transaction.cpp b/src/Transaction.cpp index fc157e01a0..95d4d27720 100644 --- a/src/Transaction.cpp +++ b/src/Transaction.cpp @@ -535,10 +535,13 @@ bool Transaction::save() Transaction::pointer Transaction::transactionFromSQL(const std::string& sql) { - Serializer rawTxn(2048); + Serializer rawTxn; std::string status; uint32 inLedger; + int txSize = 2048; + rawTxn.resize(txSize); + { ScopedLock sl(theApp->getTxnDB()->getDBLock()); Database* db = theApp->getTxnDB()->getDB(); @@ -548,15 +551,15 @@ Transaction::pointer Transaction::transactionFromSQL(const std::string& sql) db->getStr("Status", status); inLedger = db->getInt("LedgerSeq"); - int txSize = db->getBinary("RawTxn", &*rawTxn.begin(), rawTxn.capacity()); - if (txSize > rawTxn.size()) + txSize = db->getBinary("RawTxn", &*rawTxn.begin(), rawTxn.getLength()); + if (txSize > rawTxn.getLength()) { rawTxn.resize(txSize); - db->getBinary("RawTxn", &*rawTxn.begin(), rawTxn.capacity()); + db->getBinary("RawTxn", &*rawTxn.begin(), rawTxn.getLength()); } - else rawTxn.resize(txSize); db->endIterRows(); } + rawTxn.resize(txSize); SerializerIterator it(rawTxn); SerializedTransaction::pointer txn = boost::make_shared(boost::ref(it));