Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Fix buggy string comparison in OCW pallet example#8602

Merged
bkchr merged 1 commit intoparitytech:masterfrom
KiChjang:small-fix
Apr 12, 2021
Merged

Fix buggy string comparison in OCW pallet example#8602
bkchr merged 1 commit intoparitytech:masterfrom
KiChjang:small-fix

Conversation

@KiChjang
Copy link
Contributor

@KiChjang KiChjang commented Apr 12, 2021

Also made the code a bit more idiomatic by leveraging the use of ?.

The problem with the previous algorithm was that the iterator for "USD" is not reset back to the starting position in subsequent iterations of the find function, i.e. imagine we have the following JSON:

{
    "UAH": 214,
    "USD": 342
}

The original code would first see that the "UAH" string matches the first character ('U'), and it would continue to match the next one (matching 'A' with 'S'), but doesn't find a match, then the chars iterator will stay at the 'S' position when looping to the next key. This means it will erroneously refuse to match against the second key ("USD") in this example.

Though it's impossible to get a JSON that has more than 1 entry in the OCW example, I feel like it's best to get this algorithm correct, because downstream Substrate pallet developers may copy and paste this code into their pallet and may encounter this bug if they are not careful.

@bkchr bkchr added A2-insubstantial Pull request requires no code review (e.g., a sub-repository hash update). B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit labels Apr 12, 2021
@bkchr bkchr merged commit e31813b into paritytech:master Apr 12, 2021
@KiChjang KiChjang deleted the small-fix branch April 13, 2021 06:45
hirschenberger pushed a commit to hirschenberger/substrate that referenced this pull request Apr 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

A2-insubstantial Pull request requires no code review (e.g., a sub-repository hash update). B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments