Object-Stream Quarantine

A corrupt /Type /ObjStm container no longer disappears silently: the type-2 pass quarantines it with a reason, a diagnostic line, and the member object numbers it left unresolved, while every independent container keeps loading and the document load itself still completes

Quarantine Reasons

THPDFObjStmQuarantineReason distinguishes osqrNotAStream, osqrBadDictionary, osqrBadHeader (invalid /N or /First), osqrBadStreamSize, osqrDecryptFailed, osqrDecompressFailed, osqrFirstOutOfRange, osqrHeaderUnparsable, osqrContainerException, and member-level osqrMemberUnparsable for bodies that fail to parse out of a successfully decoded container without affecting their siblings

Diagnostics

GetLoadedQuarantinedObjStmCount and GetLoadedQuarantinedObjStmInfo return each record with the container object number, reason, diagnostic text, and unresolved member numbers; records accumulate across the recovery retries of one load (deduplicated per container) and clear only on the next load entry