Fix misbehaviour in url_fseek() when seeking fails.
The return value of the seek function is -1 on error, not -EPIPE (the return value in url_seek() if no seek function pointer is set) Patch by Ronald S. Bultje % rbultje A ronald P bitfreak P net % Original thread: date: Dec 31, 2006 9:25 PM subject: [Ffmpeg-devel] Re: [PATCH] file length handling Originally committed as revision 7766 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
eabbae730c
commit
68fcdbf1e5
@ -136,6 +136,8 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
|
|||||||
fill_buffer(s);
|
fill_buffer(s);
|
||||||
s->buf_ptr = s->buf_end + offset - s->pos;
|
s->buf_ptr = s->buf_end + offset - s->pos;
|
||||||
} else {
|
} else {
|
||||||
|
offset_t res = -EPIPE;
|
||||||
|
|
||||||
#if defined(CONFIG_MUXERS) || defined(CONFIG_NETWORK)
|
#if defined(CONFIG_MUXERS) || defined(CONFIG_NETWORK)
|
||||||
if (s->write_flag) {
|
if (s->write_flag) {
|
||||||
flush_buffer(s);
|
flush_buffer(s);
|
||||||
@ -146,8 +148,8 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
|
|||||||
s->buf_end = s->buffer;
|
s->buf_end = s->buffer;
|
||||||
}
|
}
|
||||||
s->buf_ptr = s->buffer;
|
s->buf_ptr = s->buffer;
|
||||||
if (!s->seek || s->seek(s->opaque, offset, SEEK_SET) == (offset_t)-EPIPE)
|
if (!s->seek || (res = s->seek(s->opaque, offset, SEEK_SET)) < 0)
|
||||||
return -EPIPE;
|
return res;
|
||||||
s->pos = offset;
|
s->pos = offset;
|
||||||
}
|
}
|
||||||
s->eof_reached = 0;
|
s->eof_reached = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user