Fix memory corruption, use-after-free, and allocation bugs in set_value() and get_value() #52
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 PR fixes several severe memory-safety issues in our hash-table implementation.
Both set_value() and get_value() contained bugs capable of causing:
This PR rewrites the critical sections to ensure correctness, atomicity, and safe memory ownership.
Key Fixes
Improvements to set_value()
Improvements to get_value()
What is the outcome of this?
After this PR:
SET is memory-safe, atomic, and predictable.
GET returns stable, independent values.
No dangling pointers, no double frees, no overwriting internal state.
Instruments reports clean behavior for all tested GET/SET patterns.
Testing
Verified correct behavior on updates, overwrites, and missing keys
Next Steps (Optional Future PRs)