mirror of
https://github.com/vsariola/sointu.git
synced 2025-07-19 13:34:34 -04:00
fix(amd64-386): sample oscillator hard crash
The sample-based oscillators converted the samplepos to an integer and did samplepos < loop_end comparison to check if we are past looping. Unfortunately, the < comparison was done in signed math. Normally, this should never happen, but if the x87 FPU stack overflowed exactly at right position, we then got 0x80000000 in samplepos, which is equal to -2147483648. Thus, we considered that sample is not looping and read the sample table at position -2147483648, well out of bound. TL;DR changing jl to jb makes sure we always wrap within to sample table, no matter what. Fixes #149.
This commit is contained in:
parent
4ee355bb45
commit
0e10cd2ae8
@ -10,6 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
the command line tools.
|
||||
|
||||
### Fixed
|
||||
- Sample-based oscillators could hard crash if a x87 stack overflow happened
|
||||
when calculating the current position in the sample ([#149][i149])
|
||||
- Numeric updown widget calculated dp-to-px conversion incorrectly, resulting in
|
||||
wrong scaling ([#150][i150])
|
||||
- Empty patch should not crash the native synth ([#148][i148])
|
||||
@ -215,4 +217,5 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
[i145]: https://github.com/vsariola/sointu/issues/145
|
||||
[i146]: https://github.com/vsariola/sointu/issues/146
|
||||
[i148]: https://github.com/vsariola/sointu/issues/148
|
||||
[i149]: https://github.com/vsariola/sointu/issues/149
|
||||
[i150]: https://github.com/vsariola/sointu/issues/150
|
||||
|
Reference in New Issue
Block a user