Skip to content

ASSERT(0) FIXME in ArchiveRecovery.cpp — unhandled format case falls through silently in release

Historical reference only: stale-v0.72a-experimental-clean and analysis\stale-v0.72a-experimental-clean are retired reference sources, not active branch targets or current baselines. Use them only as provenance or idea-extraction sources; landed status is determined against main. 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.

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 location
  • srchybrid/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.