diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 31c16acee..6b2445e21 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -843,7 +843,7 @@ void iguana_walletlock(struct supernet_info *myinfo); int32_t _SuperNET_encryptjson(char *destfname,char *passphrase,int32_t passsize,char *fname2fa,int32_t fnamesize,cJSON *argjson); int32_t bitcoin_pubkeylen(const uint8_t *pubkey); struct iguana_block *iguana_bundleblock(struct iguana_info *coin,bits256 *hash2p,struct iguana_bundle *bp,int32_t i); -int32_t iguana_ramchainfile(struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block); +void *iguana_ramchainfile(struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block); extern int32_t HDRnet,netBLOCKS; diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 0b876bb66..6ac8e7241 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -1966,18 +1966,20 @@ int32_t iguana_oldbundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **p void *iguana_bundlefile(struct iguana_info *coin,char *fname,long *filesizep,struct iguana_bundle *bp,int32_t bundlei) { - int32_t checki,hdrsi; void *ptr = 0; static bits256 zero; + int32_t checki,hdrsi; void *ptr = 0; struct iguana_ramchain blockR; static bits256 zero; *filesizep = 0; if ( (checki= iguana_peerfname(coin,&hdrsi,GLOBALTMPDIR,fname,0,bp->hashes[bundlei],zero,1,1)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize ) { printf("B iguana_ramchain_map.(%s) illegal hdrsi.%d bundlei.%d checki.%d\n",fname,hdrsi,bundlei,checki); return(0); } - if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 ) + if ( (ptr= iguana_ramchainfile(coin,0,&blockR,bp,bundlei,bp->blocks[bundlei])) == 0 ) + return(0); + iguana_ramchain_free(coin,&blockR,1); + /*if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 ) { //printf("error mapping.(%s) bundlei.%d\n",fname,bundlei); - return(0); - } + }*/ return(ptr); } diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index 7597a651b..f04b82e9d 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -1281,7 +1281,7 @@ void iguana_RTramchainalloc(struct iguana_info *coin,struct iguana_bundle *bp) } } -int32_t iguana_ramchainfile(struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block) +void *iguana_ramchainfile(struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block) { char fname[1024]; long filesize; int32_t err; void *ptr; if ( block == bp->blocks[bundlei] && (ptr= iguana_bundlefile(coin,fname,&filesize,bp,bundlei)) != 0 ) @@ -1296,12 +1296,12 @@ int32_t iguana_ramchainfile(struct iguana_info *coin,struct iguana_ramchain *des char str[65]; printf("ERROR [%d:%d] %s vs ",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2)); printf("mapped.%s\n",bits256_str(str,R->H.data->firsthash2)); - iguana_blockunmark(coin,block,bp,bundlei,1); - iguana_RTramchainfree(coin); - } else return(0); + } else return(ptr); + iguana_ramchain_free(coin,R,1); + iguana_blockunmark(coin,block,bp,bundlei,1); } } - return(-1); + return(0); } int32_t iguana_realtime_update(struct iguana_info *coin) @@ -1324,9 +1324,11 @@ int32_t iguana_realtime_update(struct iguana_info *coin) iguana_blocksetcounters(coin,block,dest); B[bundlei] = block->RO; double startmillis0 = OS_milliseconds(); static double totalmillis0; static int32_t num0; - if ( iguana_ramchainfile(coin,dest,&blockR,bp,bundlei,block) < 0 ) + if ( iguana_ramchainfile(coin,dest,&blockR,bp,bundlei,block) == 0 ) + { + iguana_RTramchainfree(coin); return(-1); - iguana_ramchain_free(coin,&blockR,1); + } else iguana_ramchain_free(coin,&blockR,1); totalmillis0 += (OS_milliseconds() - startmillis0); num0++; printf("ramchainiterate.[%d] ave %.2f micros, total %.2f seconds\n",num0,(totalmillis0*1000.)/num0,totalmillis0/1000.);