On 2018.07.09 22:05, Thomas Schmitt wrote:
lsn_t extent_lsn;
...
extent_lsn = from_733 (p_iso9660_dir->extent);
/* Important: Test here with previous .total_size */
if (p_stat->total_size > 0) {
/* This is a follow-up extent. Check for a gap. */
if (p_stat->lsn + p_stat->total_size / ISO_BLOCKSIZE != extent_lsn
|| p_stat->total_size % ISO_BLOCKSIZE) {
/* >>> Gap detected. Throw error. <<< */;
return NULL;
}
} else {
/* No extent with data before. Record this start as overall start. */
p_stat->lsn = extent_lsn;
}
/* Only now update .total_size */
p_stat->total_size += from_733 (p_iso9660_dir->size);
Ah, OK. I see now, thanks.
Then, as a pragmatic person, I vote for the "only add total_size"
approach, as this is the only one we really need, and we can address any
reports of gaps *when* people can provide a real-life example of a
gapped ISO.
As long as there's an error message on gap detected, and an error
thrown, I'm onboard with this.
The only thing I'd like to see is a planned deprecation of size (through
DO_NOT_WANT_COMPATIBILITY), so that downstream developers get some hint
that they should update their code.
Regards,
/Pete