From 665bdd3bc9ba4ac566edf5ba3fa8bbd93eb4780f Mon Sep 17 00:00:00 2001 From: Peter Todd Date: Sun, 26 Jan 2014 21:50:15 -0500 Subject: Fix off-by-one errors in use of IsFinalTx() Previously CreateNewBlock() didn't take into account the fact that IsFinalTx() without any arguments tests if the transaction is considered final in the *current* block, when both those functions really needed to know if the transaction would be final in the *next* block. Additionally the UI had a similar misunderstanding. Also adds some basic tests to check that CreateNewBlock() is in fact mining nLockTime-using transactions correctly. Thanks to Wladimir J. van der Laan for rebase. --- src/qt/transactiondesc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/qt/transactiondesc.cpp') diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 2c3a9e3a5c..c76b29861d 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -20,10 +20,10 @@ QString TransactionDesc::FormatTxStatus(const CWalletTx& wtx) { - if (!IsFinalTx(wtx)) + if (!IsFinalTx(wtx, chainActive.Height() + 1)) { if (wtx.nLockTime < LOCKTIME_THRESHOLD) - return tr("Open for %n more block(s)", "", wtx.nLockTime - chainActive.Height() + 1); + return tr("Open for %n more block(s)", "", wtx.nLockTime - chainActive.Height()); else return tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx.nLockTime)); } -- cgit v1.2.3