fix: incorrect pointer value comparison #1601
Merged
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.
This is a fix to #1569 . Thanks to @thehowl for identifying this issue and providing a thorough and insightful analysis.
Here is an further analysis based on #1569 :
this comparison would be false too.
The root cause for this is the way pointer values is obtained and compared, e.g.
in this code snippet, the address of the c[0], (&c[0]) is obtained from this:
that is a reference to the element of the underlying list of arrayValue,
in case like this:
the address is obtained by
that is a new allocated *TV, which implies the value of it would not be same within the first and second & operation.
So we should actually compare the concrete value rather than the pointers for this case.