<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.12.0">
</HEAD>
<BODY>
Good eye. I've updated the methods to only update offsets which are after the position of the newly written box. The changes should appear in the anonymous subversion shortly.<BR>
<BR>
Thanks,<BR>
Brian<BR>
<BR>
On Wed, 2006-10-11 at 16:01 +0200, Luk&#225;&#353; Lalinsk&#253; wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">Brian Nickel wrote:</FONT>
<FONT COLOR="#000000">&gt; The system I've come up with is a working solution. My method performs a</FONT>
<FONT COLOR="#000000">&gt; single file size change (when required) to write the smallest block</FONT>
<FONT COLOR="#000000">&gt; possible ILST, META, or UDTA, and then updates the necessary higher</FONT>
<FONT COLOR="#000000">&gt; level nested boxes and the offset tables. The only problem is</FONT>
<FONT COLOR="#000000">&gt; statistically impossible case where the MOOV box changes size from less</FONT>
<FONT COLOR="#000000">&gt; than to greater than 4GB.</FONT>

<FONT COLOR="#000000">Hi,</FONT>

<FONT COLOR="#000000">I've just read the TagLib# sources and the way you're updating the offset tables</FONT>
<FONT COLOR="#000000">is wrong. You should change only those entries for which you actually change</FONT>
<FONT COLOR="#000000">also offsets in the file. So if there are some entries that point before the</FONT>
<FONT COLOR="#000000">'ilst' offset, you should not add your size difference to them, otherwise you</FONT>
<FONT COLOR="#000000">make them invalid.</FONT>

<FONT COLOR="#000000">-Luk&#225;&#353;</FONT>
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>