sointu/vm/compiler
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
..
bridge fix(vm/compiler/bridge): empty patch should not crash native synth 2024-09-16 19:58:23 +03:00
templates fix(amd64-386): sample oscillator hard crash 2024-09-22 09:04:47 +03:00
compiler_macros.go reorganize things into different packages 2021-03-02 17:19:45 +02:00
compiler.go refactor: move ConstructPatterns into compiler package 2023-10-19 12:38:18 +03:00
featureset_macros.go reorganize things into different packages 2021-03-02 17:19:45 +02:00
patterns_test.go refactor: move ConstructPatterns into compiler package 2023-10-19 12:38:18 +03:00
patterns.go feat!: rewrote the GUI and model for better testability 2024-02-17 18:16:06 +02:00
song_macros.go feat(sointu, vm): implement pure-Go interpreter for bytecode 2021-03-03 23:55:58 +02:00
wasm_macros.go feat(compiler, wasm): do not hard code memory addresses to uninitialized sections 2021-04-15 23:24:58 +03:00
x86_macros.go feat(vm/compiler): export su_power function in case user needs it 2024-04-05 15:49:00 +03:00