Page MenuHomePhabricator

D4920.diff
No OneTemporary

D4920.diff

diff --git a/src/test/txvalidationcache_tests.cpp b/src/test/txvalidationcache_tests.cpp
--- a/src/test/txvalidationcache_tests.cpp
+++ b/src/test/txvalidationcache_tests.cpp
@@ -428,6 +428,16 @@
// Should get 2 script checks back -- caching is on a whole-transaction
// basis.
BOOST_CHECK_EQUAL(scriptchecks.size(), 2U);
+
+ // Execute the first check, and check its result
+ BOOST_CHECK(scriptchecks[0]());
+ BOOST_CHECK_EQUAL(scriptchecks[0].GetScriptError(), ScriptError::OK);
+ BOOST_CHECK_EQUAL(
+ scriptchecks[0].GetScriptExecutionMetrics().nSigChecks, 1);
+ // The second check does fail
+ BOOST_CHECK(!scriptchecks[1]());
+ BOOST_CHECK_EQUAL(scriptchecks[1].GetScriptError(),
+ ScriptError::INVALID_STACK_OPERATION);
}
}
diff --git a/src/validation.h b/src/validation.h
--- a/src/validation.h
+++ b/src/validation.h
@@ -19,6 +19,7 @@
#include <fs.h>
#include <protocol.h> // For CMessageHeader::MessageMagic
#include <script/script_error.h>
+#include <script/script_metrics.h>
#include <sync.h>
#include <versionbits.h>
@@ -533,6 +534,7 @@
uint32_t nFlags;
bool cacheStore;
ScriptError error;
+ ScriptExecutionMetrics metrics;
PrecomputedTransactionData txdata;
public:
@@ -562,6 +564,8 @@
}
ScriptError GetScriptError() const { return error; }
+
+ ScriptExecutionMetrics GetScriptExecutionMetrics() const { return metrics; }
};
/** Functions for disk access for blocks */
diff --git a/src/validation.cpp b/src/validation.cpp
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -1197,7 +1197,7 @@
return VerifyScript(scriptSig, scriptPubKey, nFlags,
CachingTransactionSignatureChecker(ptxTo, nIn, amount,
cacheStore, txdata),
- &error);
+ metrics, &error);
}
int GetSpendHeight(const CCoinsViewCache &inputs) {

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 1, 10:06 (7 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5187295
Default Alt Text
D4920.diff (1 KB)

Event Timeline