Skip to content

v3.0.2603140700

@iu8lmc iu8lmc tagged this 14 Mar 10:04
Three bugs in the async sliding-window decoder caused segfault during
Qt event loop shortly after startup:

1. Missing monitoring guard: async decode timer fired before audio
   input was active, calling decoder with uninitialized data.
   Fix: added `if (!m_monitoring) return;` check.

2. Wrong Fortran hidden length: `(FCL)(100*80)` passed 8000 as the
   character length for `outlines(100)`, but Fortran expects 80
   (per-element length). This caused `outlines = ' '` to write
   800KB instead of 8KB — massive stack/heap corruption.
   Fix: changed to `(FCL)80`.

3. Missing null-terminator: Fortran fills entire outlines array with
   spaces (0x20). asyncDecodeDone() used `m_asyncMsg[i][0]` as a
   null-terminator check, so it processed 100 garbage "messages"
   per 750ms tick, corrupting program state.
   Fix: added `m_asyncMsg[nout][0] = 0` after decode returns.
Assets 2
Loading