[FFmpeg-devel] [PATCH] fix av_url_read_fseek
Michael Niedermayer
michaelni
Sun Apr 11 02:46:35 CEST 2010
On Sat, Apr 10, 2010 at 04:37:36PM -0700, Howard Chu wrote:
> Michael Niedermayer wrote:
>> On Sat, Apr 10, 2010 at 09:26:31AM -0700, Howard Chu wrote:
>>> Index: libavformat/aviobuf.c
>>> ===================================================================
>>> --- libavformat/aviobuf.c (revision 22813)
>>> +++ libavformat/aviobuf.c (working copy)
>>> @@ -698,8 +698,11 @@
>>> return AVERROR(ENOSYS);
>>> ret = s->read_seek(h, stream_index, timestamp, flags);
>>> if(ret>= 0) {
>>> + int64_t pos;
>>> s->buf_ptr = s->buf_end; // Flush buffer
>>> - s->pos = s->seek(h, 0, SEEK_CUR);
>>> + pos = s->seek(h, 0, SEEK_CUR);
>>> + if (pos != AVERROR(ENOSYS))
>>> + s->pos = pos;
>>> }
>>> return ret;
>>> }
>>
>> this should be a seperate patch
>
> Protocols that implement read_seek are unlikely to also implement seek, so
> this patch is needed to prevent the pos from getting set to a negative
> value. Possibly it should just check for pos <= 0 instead of checking for
> any specific error code. It's not clear that there's any real point to
> calling seek here anyway, any stream that knows the value of SEEK_CUR would
> have already updated itself while executing the read_seek.
> --
> -- Howard Chu
> CTO, Symas Corp. http://www.symas.com
> Director, Highland Sun http://highlandsun.com/hyc/
> Chief Architect, OpenLDAP http://www.openldap.org/project/
> Index: libavformat/aviobuf.c
> ===================================================================
> --- libavformat/aviobuf.c (revision 22813)
> +++ libavformat/aviobuf.c (working copy)
> @@ -698,8 +698,11 @@
> return AVERROR(ENOSYS);
> ret = s->read_seek(h, stream_index, timestamp, flags);
> if(ret >= 0) {
> + int64_t pos;
> s->buf_ptr = s->buf_end; // Flush buffer
> - s->pos = s->seek(h, 0, SEEK_CUR);
> + pos = s->seek(h, 0, SEEK_CUR);
> + if (pos != AVERROR(ENOSYS))
> + s->pos = pos;
should that check not be <0 ?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The greatest way to live with honor in this world is to be what we pretend
to be. -- Socrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100411/44c8229b/attachment.pgp>
More information about the ffmpeg-devel
mailing list