My patch for metadata_iterators didn't completely fix the problem.
The behavior of chain_prepare_for_write_() must always be the same
as the behavior of FLAC__metadata_chain_check_if_tempfile_needed().
Currently it's not the case: one check was missed in
FLAC__metadata_chain_check_if_tempfile_needed(), and also
chain_prepare_for_write_()
checks sizes of metadata blocks *after* making the changes of the chain, while
FLAC__metadata_chain_check_if_tempfile_needed() does it *before* the changes.
This patch changes FLAC__metadata_chain_check_if_tempfile_needed() so that it
keeps some info (lbs_state, lbs_size) about estimated changes and then
uses it to check the block sizes.
It also simplifies FLAC__metadata_chain_check_if_tempfile_needed() a little.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: metadata_iterators_fix.patch
Type: application/octet-stream
Size: 6644 bytes
Desc: not available
URL:
<http://lists.xiph.org/pipermail/flac-dev/attachments/20160515/db4a24f1/attachment.obj>