int64_t total_size = 0;
MOVAtom a;
int i;
- int err = 0;
if (atom.size < 0)
atom.size = INT64_MAX;
- while(((total_size + 8) < atom.size) && !url_feof(pb) && !err) {
+ while(((total_size + 8) < atom.size) && !url_feof(pb)) {
int (*parse)(MOVContext*, ByteIOContext*, MOVAtom) = NULL;
a.size = atom.size;
a.type=0;
} else {
int64_t start_pos = url_ftell(pb);
int64_t left;
- err = parse(c, pb, a);
+ int err = parse(c, pb, a);
+ if (err < 0)
+ return err;
if (url_is_streamed(pb) && c->found_moov && c->found_mdat)
break;
left = a.size - url_ftell(pb) + start_pos;
total_size += a.size;
}
- if (!err && total_size < atom.size && atom.size < 0x7ffff)
+ if (total_size < atom.size && atom.size < 0x7ffff)
url_fskip(pb, atom.size - total_size);
- return err;
+ return 0;
}
static int mov_read_dref(MOVContext *c, ByteIOContext *pb, MOVAtom atom)