|
|
|
@@ -243,13 +243,16 @@ int av_format_get_probe_score(const AVFormatContext *s) |
|
|
|
int ffio_limit(AVIOContext *s, int size) |
|
|
|
{ |
|
|
|
if (s->maxsize>= 0) { |
|
|
|
int64_t remaining= s->maxsize - avio_tell(s); |
|
|
|
int64_t pos = avio_tell(s); |
|
|
|
int64_t remaining= s->maxsize - pos; |
|
|
|
if (remaining < size) { |
|
|
|
int64_t newsize = avio_size(s); |
|
|
|
if (!s->maxsize || s->maxsize<newsize) |
|
|
|
s->maxsize = newsize - !newsize; |
|
|
|
remaining= s->maxsize - avio_tell(s); |
|
|
|
remaining= FFMAX(remaining, 0); |
|
|
|
if (pos > s->maxsize && s->maxsize >= 0) |
|
|
|
s->maxsize = AVERROR(EIO); |
|
|
|
if (s->maxsize >= 0) |
|
|
|
remaining = s->maxsize - pos; |
|
|
|
} |
|
|
|
|
|
|
|
if (s->maxsize>= 0 && remaining+1 < size) { |
|
|
|
|