Avoid memcmp() in tests and new equality checks#318
Open
Conversation
Coverage Report for CI Build 25597637302Coverage increased (+0.02%) to 99.13%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
9922a49 to
752e638
Compare
memcmp() in testsmemcmp() in tests and new C++ comparison methods.
8d0ef38 to
8045ce9
Compare
430f3d0 to
60036c8
Compare
f9e941f to
9d4b436
Compare
memcmp() in tests and new C++ comparison methods.memcmp() in tests and new equality checks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Using
memcmp()to compare structures can be problematic, because of the padding between fields. The initializer is not guaranteed to set the padded areas to 0 (even if it usually does). When it does not, two structures may have identical fields bit-for-bit, but 1memcmp()1 will report them as differing because of the different uninitialized padding.To resolve:
novas_equals_[...]()functions to the C99 API, and use these to perform comparisons between structures with typical 'sane' tolerances.structcomparison methods.equals(),operator==()andoperator!=()methods to more C++ classes, using the new C99 comparisons.