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.
In a few places, the end of an events array is sliced using
Array#slice!
passing the initial element (or offset from the end) followed by a second parameter which is the length of the array.The documentation for Array#slice! tells us that the second argument should be the length of the slice, and not the end index of the slice; but normally Ruby will cap the length of the slice to the number of elements left in the array.
However, there's a bug in Ruby 3.0.0--3.0.2 (https://bugs.ruby-lang.org/issues/18138) that skips the sanity check on length and causes illegal memory access and occasional segfaults. This change fixes the arguments to use a Range object whose end is used as the final index of the slice as I believe the author originally intended, and prevent triggering this bug in Array#slice!
Fixes #60