ASSERT(0) FIXME in ArchiveRecovery.cpp — unhandled format case falls through silently in release
Historical reference only:
stale-v0.72a-experimental-cleanandanalysis\stale-v0.72a-experimental-cleanare retired reference sources, not active branch targets or current baselines. Use them only as provenance or idea-extraction sources; landed status is determined againstmain. See Historical References.
Summary¶
srchybrid/ArchiveRecovery.cpp:233 contains:
ASSERT(0); // FIXME
In debug builds this fires an assertion dialog. In release builds it compiles out
to nothing — the code path falls through silently, potentially leaving recovery state
in an undefined or partially-initialised condition. The FIXME annotation has been
in the codebase for years with no action taken.
Context¶
ArchiveRecovery.cpp has 14 ASSERT(0) calls total, the highest density of any
file outside the encryption and protocol-parsing layers. Most represent unhandled
archive format cases (specific container/codec combinations). The file represents
a partially-implemented feature.
Product Decision¶
On 2026-04-26, archive preview/recovery was explicitly retained as-is for Release 1. This surface is not a release hardening target, and this bug should not be scheduled unless that product decision is explicitly reversed.
Related Work¶
REFAC_017 (encryption ASSERT(0) audit) was marked PARTIAL — most networking
ASSERTs were converted to real OnError() paths (commit 2b9837c), but
ArchiveRecovery.cpp:233 was explicitly not addressed.
Historical Fix Shape¶
Replace ASSERT(0); // FIXME with a graceful error return that:
1. Logs the unhandled case (file type / codec).
2. Returns a safe error value to the caller.
3. Does not leave the recovery object in a corrupt state.
Optionally: audit all 14 ASSERT(0) calls in the same file and replace them
with the same pattern.
Files¶
srchybrid/ArchiveRecovery.cpp:233— primary locationsrchybrid/ArchiveRecovery.cpp— full audit for all 14 ASSERT(0) instances
Experimental Branch Decision¶
In stale-v0.72a-experimental-clean: The archive recovery feature was retired entirely in commit c4cef47 (FIX: retire legacy archive recovery feature). ArchiveRecovery.cpp, ArchiveRecovery.h, ArchivePreviewDlg.cpp, ArchivePreviewDlg.h, and 3DPreviewControl.cpp were all removed. Resource IDs and menu entries for archive preview were also removed.
Current decision: neither retirement nor hardening is planned. The feature is intentionally kept unchanged, so this item is closed as Wont-Fix.