On Sun, 13 Oct 2013 17:27:01 -0400, Justin Ruggles <[email protected]> wrote: > This is basically an overread/overwrite-safe memcpy between a > GetByteContext and a PutByteContext. > --- > libavcodec/bytestream.h | 29 +++++++++++++++++++++++++++++ > 1 files changed, 29 insertions(+), 0 deletions(-) > > diff --git a/libavcodec/bytestream.h b/libavcodec/bytestream.h > index 63d61f1..21b1cba 100644 > --- a/libavcodec/bytestream.h > +++ b/libavcodec/bytestream.h > @@ -325,6 +325,35 @@ static av_always_inline unsigned int > bytestream2_get_eof(PutByteContext *p) > return p->eof; > } > > +static av_always_inline unsigned int bytestream2_copy_buffer(PutByteContext > *p, > + GetByteContext > *g, > + unsigned int > size) > +{ > + int size2; > + > + if (p->eof) > + return 0; > + size2 = FFMIN(p->buffer_end - p->buffer, size); > + if (size2 != size) > + p->eof = 1; > + size2 = FFMIN(g->buffer_end - g->buffer, size2);
Won't this order result in spurious eofs? Also would be really nice if those functions were documented. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
