- free(out);
- ret = ns;
- if (read_ret == 0 || read_ret == OV_HOLE)
- goto out;
- ret = -E_OGGDEC_BADLINK;
- if (read_ret < 0)
- goto out;
- btr_add_output(out, read_ret, btrn);
- if (btr_get_output_queue_size(btrn) > 128 * 1024)
- return; /* enough data for the moment */
+ break;
+ have += read_ret;
+ if (have >= OGGDEC_OUTPUT_CHUNK_SIZE)
+ break;
+ }
+ if (have == 0)
+ free(out);
+ else if (have < OGGDEC_OUTPUT_CHUNK_SIZE)
+ out = para_realloc(out, have);
+ if (have > 0) {
+ btr_add_output(out, have, btrn);
+ fn->min_iqs = 0;