[FFmpeg-devel] & vs. &&

Benoit Fouet benoit.fouet
Tue Oct 13 14:42:57 CEST 2009


On 2009-10-13 14:04, Reimar D?ffinger wrote:
> On Tue, Oct 13, 2009 at 01:54:42PM +0200, Benoit Fouet wrote:
>> So my guess is that url_open_dyn_buf_internal is buggy.
>> I don't know what to do, but hope that helps knowledgeable people :)
> 
> My suggestion is to "fix" url_resetbuf to make it do what it already
> does now, ignoring what it may be supposed to do.
> The h->flags stuff IMO is only to check against programming errors but
> obviously adds more errors that it avoids.
> So I suggest to change the whole thing to
> assert(flags == URL_WRONLY || flags == URL_RDONLY)

sample patch to do that, now 'make test' passes:

Index: libavformat/aviobuf.c
===================================================================
--- libavformat/aviobuf.c       (revision 20220)
+++ libavformat/aviobuf.c       (working copy)
@@ -585,9 +585,7 @@ int url_setbufsize(ByteIOContext *s, int

 int url_resetbuf(ByteIOContext *s, int flags)
 {
-    URLContext *h = s->opaque;
-    if ((flags & URL_RDWR) || (h && h->flags != flags && !h->flags &
URL_RDWR))
-        return AVERROR(EINVAL);
+    assert(flags == URL_WRONLY || flags == URL_RDONLY);

     if (flags & URL_WRONLY) {
         s->buf_end = s->buffer + s->buffer_size;


Ben




More information about the ffmpeg-devel mailing list