[FFmpeg-devel] & vs. &&
Reimar Döffinger
Reimar.Doeffinger
Mon Oct 12 18:52:18 CEST 2009
On Mon, Oct 12, 2009 at 06:41:20PM +0200, Benoit Fouet wrote:
> > So, I have a patch now:
> > Index: libavformat/aviobuf.c
> > ===================================================================
> > --- libavformat/aviobuf.c (revision 20209)
> > +++ libavformat/aviobuf.c (working copy)
> > @@ -590,7 +590,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))
> > + if ((flags & URL_RDWR) || (h && h->flags != flags && !(h->flags &
> > URL_RDWR)))
> > return AVERROR(EINVAL);
> >
> > if (flags & URL_WRONLY) {
> >
> >
> > This is crashing the following command line on my machine (triggered by
> > make test), can anybody reproduce ?
> >
> > $ gdb --args ./ffmpeg_g -v 0 -y -flags +bitexact -dct fastint -idct
> > simple -sws_flags +accurate_rnd+bitexact -t 1 -qscale 10 -f image2
> > -vcodec pgmyuv -i ./tests/vsynth1/%02d.pgm -f s16le -i
> > ././tests/data/asynth1.sw -acodec mp2
> > ././tests/data/b-lavf.nut
> >
>
> The problem seems to be in the handling of buf_end.
> When entering put_buffer() from libavformat/nutenc.c:389, the
> ByteIOContext is as follows:
> {buffer = 0xa465324 "\003",
> buffer_size = 1024,
> buf_ptr = 0xa465324 "\003",
> buf_end = 0x0,
That is almost certainly due to url_resetbuf failing (and I don't think
there is any use of it that actually checks for failure).
You could try if using
if ((flags & URL_RDWR) || (h && (h->flags & (URL_RDONLY | URL_WRONLY | URL_RDWR)) != flags && !(h->flags & URL_RDWR)))
helps any...
If not, that would mean we're writing onto a read-only url context?
More information about the ffmpeg-devel
mailing list