rebis-dev: Fix Heap::compute_pstr_size being off by one cell #2759
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.
So it looks like my fix for segfault around heap and PStr had an off-by-one error in the logic for
compute_pstr_size
, which this PR fixes.This off-by-one error was compounded by a second off-by-one error within the logic of
build_functor!()
(some parts did not account for the[]
atom appended toPStr
s), which happened to cancel out with the previous, invalid implementation ofcompute_pstr_size
.This does not address #2757 (and I would prefer to fix that issue in a separate PR, so that we can get the unit tests of
rebis-dev
back in order), though the logic forcompute_pstr_size
should coincide with the corrected behavior of #2757. The test cases I've added here ought to be tweaked once the correct behavior is set in stone.Now
Heap::compute_pstr_size
accurately measures the number of bytes needed byHeap::allocate_pstr
(except in the instances of #2757).I've also simplified the logic a bit, and cleaned up the affected tests of
build_functor
:)