Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix potential crash when deserializing Dictionary<T, U> where T is an enum#58

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
werkz-by-drake wants to merge1 commit intoSamboyCoding:master
base:master
Choose a base branch
Loading
fromRocketWerkz:enum-keys

Conversation

@werkz-by-drake
Copy link

In the case where a TomlField is being applied to a Dictionary with enum keys, there is a possibility for an exception to be thrown that can't be handled well if an invalid enum key exists in the TOML data.

Reproduction:

(withIgnoreInvalidEnumValues set to true)

a. Parse a TOML string with multiple invalid keys
b. Parse a TOML string with one invalid key, and at least one other valid key at the default value

Result:

a. An key is added at the default (0) value with the invalid enum's value, which is hard to detect
b. An exception is thrown when a valid key at the default (0) value also exists
c. An exception is thrown when multiple invalid keys are found

Expected:

Invalid keys should not be added to the dictionary, multiple keys should never happen


Changes in this PR:

  • Invalid keys are no longer added to the resulting table.
  • Unit tests have also been added to ensure the new behaviour works, and that it doesn't break the behaviour of multiple keys being illegal under the TOML standard.

Previously, invalid enum keys would often crash the program when tryingto add the same key twice.However, it may not be ideal for us to even add invalid keys to aDictionary; so I've provided an option that allows the user to skipthese fields from being added entirely.In the case of Ignore, it will still set it to the first enum value asit did before - but it will no longer crash when trying to add the samekey multiple times (in the case where multiple invalid keys were found,or a valid key at the first enumerator also exists)
@coveralls
Copy link

Pull Request Test Coverage Report forBuild 17082857410

Details

  • 17 of17(100.0%) changed or added relevant lines in1 file are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.3%) to91.199%

TotalsCoverage Status
Change from baseBuild 15096414680:0.3%
Covered Lines:1948
Relevant Lines:2136

💛 -Coveralls

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@werkz-by-drake@coveralls

[8]ページ先頭

©2009-2025 Movatter.jp