diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index 992db709..7bc2ba7d 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -1773,7 +1773,7 @@ NAN_METHOD(BlockFromHex) { } Local jsblock = NanNew(); - cblock_to_jsblock(cblock, 0, jsblock); + cblock_to_jsblock(cblock, NULL, jsblock); NanReturnValue(jsblock); } @@ -3073,13 +3073,14 @@ async_import_key_after(uv_work_t *req) { static inline void cblock_to_jsblock(const CBlock& cblock, const CBlockIndex* cblock_index, Local jsblock) { jsblock->Set(NanNew("hash"), NanNew(cblock.GetHash().GetHex().c_str())); - return; CMerkleTx txGen(cblock.vtx[0]); txGen.SetMerkleBranch(cblock); jsblock->Set(NanNew("confirmations"), NanNew((int)txGen.GetDepthInMainChain())->ToInt32()); jsblock->Set(NanNew("size"), NanNew((int)::GetSerializeSize(cblock, SER_NETWORK, PROTOCOL_VERSION))->ToInt32()); - jsblock->Set(NanNew("height"), NanNew(cblock_index->nHeight)); + if (cblock_index) { + jsblock->Set(NanNew("height"), NanNew(cblock_index->nHeight)); + } jsblock->Set(NanNew("version"), NanNew(cblock.nVersion)); jsblock->Set(NanNew("merkleroot"), NanNew(cblock.hashMerkleRoot.GetHex())); @@ -3109,10 +3110,12 @@ cblock_to_jsblock(const CBlock& cblock, const CBlockIndex* cblock_index, LocalSet(NanNew("time"), NanNew((unsigned int)cblock.GetBlockTime())->ToUint32()); jsblock->Set(NanNew("nonce"), NanNew((unsigned int)cblock.nNonce)->ToUint32()); jsblock->Set(NanNew("bits"), NanNew((unsigned int)cblock.nBits)->ToUint32()); - jsblock->Set(NanNew("difficulty"), NanNew(GetDifficulty(cblock_index))); - jsblock->Set(NanNew("chainwork"), NanNew(cblock_index->nChainWork.GetHex())); + if (cblock_index) { + jsblock->Set(NanNew("difficulty"), NanNew(GetDifficulty(cblock_index))); + jsblock->Set(NanNew("chainwork"), NanNew(cblock_index->nChainWork.GetHex())); + } - if (cblock_index->pprev) { + if (cblock_index && cblock_index->pprev) { jsblock->Set(NanNew("previousblockhash"), NanNew(cblock_index->pprev->GetBlockHash().GetHex())); } else { // genesis @@ -3120,9 +3123,11 @@ cblock_to_jsblock(const CBlock& cblock, const CBlockIndex* cblock_index, Local("0000000000000000000000000000000000000000000000000000000000000000")); } - CBlockIndex *pnext = chainActive.Next(cblock_index); - if (pnext) { - jsblock->Set(NanNew("nextblockhash"), NanNew(pnext->GetBlockHash().GetHex())); + if (cblock_index) { + CBlockIndex *pnext = chainActive.Next(cblock_index); + if (pnext) { + jsblock->Set(NanNew("nextblockhash"), NanNew(pnext->GetBlockHash().GetHex())); + } } CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); @@ -3634,8 +3639,8 @@ NAN_METHOD(HookPackets) { CBlock block; *cur->vRecv >> block; Local jsblock = NanNew(); - cblock_to_jsblock(block, 0, jsblock); - // cblock_to_jsblock(block, 0, o); + cblock_to_jsblock(block, NULL, jsblock); + // cblock_to_jsblock(block, NULL, o); o->Set(NanNew("block"), jsblock); } else if (strCommand == "getaddr") { ; // not much other information in getaddr as long as we know we got a getaddr