Skip to content

ls 0.3.1

Choose a tag to compare

@creep-ltx creep-ltx released this 23 Jul 23:32
· 178 commits to main since this release

The -R freeze, root-caused and fixed. This page last saw 0.1, so it also carries 0.2's IoErr()-before-report fix and 0.3's empty-name recursion guard — and now the real story underneath all of them.

  • The bug: ls freed its entry records with the wrong deallocator (Dispose() on NEW'd objects). In the E-VO runtime, small NEW objects are carved from shared 5000-byte allocator chunks — and Dispose() on the first entry carved from a chunk frees the whole chunk while the rest are still live. Big listings corrupted their own heap: intermittently blank names, and with -R a self-recursion that could hard-freeze the machine.
  • The fix: NEW pairs with END — one rule, three call sites. Verified against the E-VO runtime source, the compiled binary, and A/B runs over a full system drive: 0.3 crashes, 0.3.1 walks all 138 directories with every name intact and the entry set matching the host filesystem exactly.
  • The 0.3 empty-name guard stays in as defense in depth.
  • Binary sizes: E 11452 bytes; the asm twin still tracks 0.2 (its own allocator — it never had this bug).

Download ls-0.3.1.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just ls.