When you are through writing data to a chunk, you complete the write by
calling popchunk():
    error = PopChunk (iff);
If you wrote fewer bytes than you declared with pushchunk(), popchunk()
will return an error.  If you specified IFFSIZE_UNKNOWN, PopChunk() will
seek backward on the stream and write the final size.  If you specified a
chunk size that was odd, PopChunk() will write the pad byte automatically.
pushchunk() and popchunk() nest; every call to pushchunk() must have a
corresponding call to PopChunk().