bugfix: broken eop memory compatibility check #4851
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.
The eop memory compatibility check was slightly broken and would try to compare
memory
fields with different tags.Consider:
v0.mo
v1.mo
this upgrade should be allowed because
four
is dropped andthree
is added, whilezero
is preserved, but eop would fail with memory compatibility error.The search for the next tag in the subtype would assume that the next tag found was less or equal when, in fact, it could be a higher tag in the case the field is absent on the left, which is allowed for memory compatibility.
Needs careful review.
Maybe it would be safer to adjust the code to have two cases, one for main_actor, and another for !main_actor.