From: Jeff Garzik Date: Mon, 14 May 2012 05:11:11 +0000 (-0400) Subject: Always check return values of TxnBegin() and TxnCommit() X-Git-Tag: v0.4.0-unstable~129^2~1^2^2~2^2^2~5 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=738592a002003246849e4b3102aebdab738e976a Always check return values of TxnBegin() and TxnCommit() PARTIAL, since d68dcf7 isn't backported (yet) --- diff --git a/src/main.cpp b/src/main.cpp index 0abba82..abacbe5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1336,7 +1336,9 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) { uint256 hash = GetHash(); - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return error("SetBestChain() : TxnBegin failed"); + if (pindexGenesisBlock == NULL && hash == hashGenesisBlock) { txdb.WriteHashBestChain(hash); @@ -1416,7 +1418,8 @@ bool CBlock::AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos) pindexNew->bnChainWork = (pindexNew->pprev ? pindexNew->pprev->bnChainWork : 0) + pindexNew->GetBlockWork(); CTxDB txdb; - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return false; txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew)); if (!txdb.TxnCommit()) return false; diff --git a/src/rpc.cpp b/src/rpc.cpp index 8a02d95..e2ae17e 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -723,7 +723,8 @@ Value movecmd(const Array& params, bool fHelp) strComment = params[4].get_str(); CWalletDB walletdb(pwalletMain->strWalletFile); - walletdb.TxnBegin(); + if (!walletdb.TxnBegin()) + throw JSONRPCError(-20, "database error"); int64 nNow = GetAdjustedTime(); @@ -745,7 +746,8 @@ Value movecmd(const Array& params, bool fHelp) credit.strComment = strComment; walletdb.WriteAccountingEntry(credit); - walletdb.TxnCommit(); + if (!walletdb.TxnCommit()) + throw JSONRPCError(-20, "database error"); return true; } diff --git a/src/wallet.cpp b/src/wallet.cpp index b3eb06a..6bf8e58 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -165,7 +165,8 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) if (fFileBacked) { pwalletdbEncryption = new CWalletDB(strWalletFile); - pwalletdbEncryption->TxnBegin(); + if (!pwalletdbEncryption->TxnBegin()) + return false; pwalletdbEncryption->WriteMasterKey(nMasterKeyMaxID, kMasterKey); }