Message ID | 20190817002751.7986-1-andreas.rheinhardt@gmail.com |
---|---|
State | Accepted |
Commit | c294f38c91f440880ffd28fda0eeb1154431ab7e |
Headers | show |
On 8/16/2019 9:27 PM, Andreas Rheinhardt wrote: > matroska_reset_status (a function that is used during seeking (among > other things)) used an int for the return value of avio_seek which > returns an int64_t. Checking the return value then indicated an error > even though the seek was successfull for targets in the range of > 2GB-4GB, 6GB-8GB, ... This error implied that the status hasn't been > reset and in particular, the old level was still considered to be in > force, so that ebml_parse returned errors because the newly parsed > elements were of course not contained in the previously active and still > wrongly considered active master element any more. > > Addresses ticket #8084. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> > --- > libavformat/matroskadec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c > index 4e20f15792..1ea9b807e6 100644 > --- a/libavformat/matroskadec.c > +++ b/libavformat/matroskadec.c > @@ -757,7 +757,7 @@ static int matroska_reset_status(MatroskaDemuxContext *matroska, > uint32_t id, int64_t position) > { > if (position >= 0) { > - int err = avio_seek(matroska->ctx->pb, position, SEEK_SET); > + int64_t err = avio_seek(matroska->ctx->pb, position, SEEK_SET); > if (err < 0) > return err; > } Applied and backported to release/4.2 Thanks.
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 4e20f15792..1ea9b807e6 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -757,7 +757,7 @@ static int matroska_reset_status(MatroskaDemuxContext *matroska, uint32_t id, int64_t position) { if (position >= 0) { - int err = avio_seek(matroska->ctx->pb, position, SEEK_SET); + int64_t err = avio_seek(matroska->ctx->pb, position, SEEK_SET); if (err < 0) return err; }
matroska_reset_status (a function that is used during seeking (among other things)) used an int for the return value of avio_seek which returns an int64_t. Checking the return value then indicated an error even though the seek was successfull for targets in the range of 2GB-4GB, 6GB-8GB, ... This error implied that the status hasn't been reset and in particular, the old level was still considered to be in force, so that ebml_parse returned errors because the newly parsed elements were of course not contained in the previously active and still wrongly considered active master element any more. Addresses ticket #8084. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> --- libavformat/matroskadec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)