walks the decompression filter list, invoking the close handler
on each one. In particular, this means that the compress handler
should not recursively invoke close on it's source.
SVN-Revision: 282
/* TODO: Clean up the formatters. */
/* Clean up the stream pipeline. */
- if (a->source != NULL) {
+ while (a->source != NULL) {
+ struct archive_read_source *t = a->source->upstream;
r1 = (a->source->close)(a->source);
if (r1 < r)
r = r1;
- a->source = NULL;
+ a->source = t;
}
/* Release the reader objects. */
{
struct private_data *state = (struct private_data *)self->data;
- self->upstream->close(self->upstream);
free(state->out_block);
free(state);
free(self);