diff --git a/libavformat/mov.c b/libavformat/mov.c index 48242bb821556153db4862b74022790c80512b4a..2b045bdcf515a216272bed71e95168ce3f6abf2d 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -181,11 +181,10 @@ static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOVAtom atom) 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; @@ -226,7 +225,9 @@ static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOVAtom atom) } 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; @@ -237,10 +238,10 @@ static int mov_read_default(MOVContext *c, ByteIOContext *pb, MOVAtom atom) 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)