sointu/vm
5684185+vsariola@users.noreply.github.com 0e10cd2ae8 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.
2024-09-22 09:04:47 +03:00
..
compiler fix(amd64-386): sample oscillator hard crash 2024-09-22 09:04:47 +03:00
generate docs: improve go doc comments for vm package 2023-10-19 11:54:12 +03:00
bytecode.go feat: add ability to disable units temporarily 2024-02-19 21:36:14 +02:00
delaytable.go fix(vm): prevent crash when only disabled delay units & test it 2024-08-14 19:41:44 +03:00
doc.go docs: improve go doc comments for vm package 2023-10-19 11:54:12 +03:00
featureset.go feat: add ability to disable units temporarily 2024-02-19 21:36:14 +02:00
go_synth_test.go test(vm): disabled units should not affect NecessaryFeatures for vm 2024-09-08 11:22:05 +03:00
go_synth.go feat(vm): add dbgain unit, where gain is defined in decibels 2023-10-23 21:57:29 +03:00
opcodes.go feat(vm): add dbgain unit, where gain is defined in decibels 2023-10-23 21:57:29 +03:00