X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fmain.cpp;h=613de6b17433f441ca16fa8e4bb92a75ab1e3b4d;hp=502aa15e0a18af0d18227e45ce97cb70543f5ee7;hb=refs%2Ftags%2Fnvc-v0.5.8;hpb=c95d66bd55a225326e81dce15d347f04b1d71d67 diff --git a/src/main.cpp b/src/main.cpp index 502aa15..613de6b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -446,6 +446,17 @@ int CMerkleTx::SetMerkleBranch(const CBlock* pblock) { CBlock blockTmp; + if (pblock == NULL) + { + // Load the block this tx is in + CTxIndex txindex; + if (!CTxDB("r").ReadTxIndex(GetHash(), txindex)) + return 0; + if (!blockTmp.ReadFromDisk(txindex.pos.nFile, txindex.pos.nBlockPos)) + return 0; + pblock = &blockTmp; + } + // Update the tx's hashBlock hashBlock = pblock->GetHash(); @@ -1970,10 +1981,10 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) } // Connect further blocks - BOOST_REVERSE_FOREACH(CBlockIndex *pindex, vpindexSecondary) + for (std::vector::reverse_iterator rit = vpindexSecondary.rbegin(); rit != vpindexSecondary.rend(); ++rit) { CBlock block; - if (!block.ReadFromDisk(pindex)) + if (!block.ReadFromDisk(*rit)) { printf("SetBestChain() : ReadFromDisk failed\n"); break; @@ -1983,7 +1994,7 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) break; } // errors now are not fatal, we still did a reorganisation to a new chain in a valid way - if (!block.SetBestChainInner(txdb, pindex)) + if (!block.SetBestChainInner(txdb, *rit)) break; } } @@ -2775,12 +2786,12 @@ bool LoadBlockIndex(bool fAllowNew) // CTxOut(empty) // vMerkleTree: 4cb33b3b6a - const char* pszTimestamp = "https://bitcointalk.org/index.php?topic=134179.msg1502196#msg1502196"; + const string strTimestamp = "https://bitcointalk.org/index.php?topic=134179.msg1502196#msg1502196"; CTransaction txNew; txNew.nTime = 1360105017; txNew.vin.resize(1); txNew.vout.resize(1); - txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(9999) << vector((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp)); + txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(9999) << vector(strTimestamp.begin(), strTimestamp.end()); txNew.vout[0].SetEmpty(); CBlock block; block.vtx.push_back(txNew);