diff options
Diffstat (limited to 'db.cpp')
-rw-r--r-- | db.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -656,6 +656,7 @@ bool CWalletDB::LoadWallet() { vchDefaultKey.clear(); int nFileVersion = 0; + vector<uint256> vWalletUpgrade; // Modify defaults #ifndef __WXMSW__ @@ -705,6 +706,25 @@ bool CWalletDB::LoadWallet() if (wtx.GetHash() != hash) printf("Error in wallet.dat, hash mismatch\n"); + // Undo serialize changes in 31600 + if (31404 <= wtx.fTimeReceivedIsTxTime && wtx.fTimeReceivedIsTxTime <= 31703) + { + if (!ssValue.empty()) + { + char fTmp; + char fUnused; + ssValue >> fTmp >> fUnused >> wtx.strFromAccount; + printf("LoadWallet() upgrading tx ver=%d %d '%s' %s\n", wtx.fTimeReceivedIsTxTime, fTmp, wtx.strFromAccount.c_str(), hash.ToString().c_str()); + wtx.fTimeReceivedIsTxTime = fTmp; + } + else + { + printf("LoadWallet() repairing tx ver=%d %s\n", wtx.fTimeReceivedIsTxTime, hash.ToString().c_str()); + wtx.fTimeReceivedIsTxTime = 0; + } + vWalletUpgrade.push_back(hash); + } + //// debug print //printf("LoadWallet %s\n", wtx.GetHash().ToString().c_str()); //printf(" %12I64d %s %s %s\n", @@ -774,6 +794,9 @@ bool CWalletDB::LoadWallet() pcursor->close(); } + foreach(uint256 hash, vWalletUpgrade) + WriteTx(hash, mapWallet[hash]); + printf("nFileVersion = %d\n", nFileVersion); printf("fGenerateBitcoins = %d\n", fGenerateBitcoins); printf("nTransactionFee = %"PRI64d"\n", nTransactionFee); @@ -794,6 +817,7 @@ bool CWalletDB::LoadWallet() WriteVersion(VERSION); } + return true; } |