The true cause is that in many calculations, the padding that is added to the window (so that SIMD operations don't need to perform bounds checks) was included in calculations where it should not be. This caused wrapping behavior in the window to be incorrect, and things go sideways from there.
Correcting this bug and subsequent fuzzing found test cases that hit all the branches in the match copying logic, which is now fully implemented.
thanks to @VorpalBlade for the original bug report and easy reproduction of the problem!
fix #109
The true cause is that in many calculations, the padding that is added to the window (so that SIMD operations don't need to perform bounds checks) was included in calculations where it should not be. This caused wrapping behavior in the window to be incorrect, and things go sideways from there.
Correcting this bug and subsequent fuzzing found test cases that hit all the branches in the match copying logic, which is now fully implemented.
thanks to @VorpalBlade for the original bug report and easy reproduction of the problem!