mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
test: guarantee proper lifetime for temporary Rules object: (#4917)
* Commit 01c37fe introduced a change to the STTx unit test where a local
"defaultRules" object was created with a temporary inline "presets"
value provided to the ctor. Rules::Impl stores a const ref to the
presets provided to the ctor. This particular call provided an inline
temp variable, which goes out of scope as soon as the object is
created. On Windows, attempting to use the presets (e.g. via the
enabled() function) causes an access violation, which crashes the test
run.
* An audit of the code indicates that all other instances of Rules use
the Application's config.features list, which will have a sufficient
lifetime.
This commit is contained in:
@@ -1591,7 +1591,11 @@ public:
|
||||
});
|
||||
j.sign(keypair.first, keypair.second);
|
||||
|
||||
Rules defaultRules{{}};
|
||||
// Rules store a reference to the presets. Create a local to guarantee
|
||||
// proper lifetime.
|
||||
std::unordered_set<uint256, beast::uhash<>> const presets;
|
||||
Rules const defaultRules{presets};
|
||||
BEAST_EXPECT(!defaultRules.enabled(featureExpandedSignerList));
|
||||
|
||||
unexpected(
|
||||
!j.checkSign(STTx::RequireFullyCanonicalSig::yes, defaultRules),
|
||||
|
||||
Reference in New Issue
Block a user