[FFmpeg-devel] [PATCH 01/21] avformat/avio: Don't use incompatible function pointer type for call

Tomas Härdin git at haerdin.se
Sat Sep 9 09:37:58 EEST 2023


fre 2023-09-08 klockan 22:38 +0200 skrev Marton Balint:
> 
> 
> On Thu, 7 Sep 2023, Andreas Rheinhardt wrote:
> 
> > It is undefined behaviour even in cases where it works
> > (it works because it is only a const uint8_t* vs. uint8_t*
> > difference).
> > 
> > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> > ---
> > libavformat/avio.c | 25 ++++++++++++++++---------
> > 1 file changed, 16 insertions(+), 9 deletions(-)
> > 
> > diff --git a/libavformat/avio.c b/libavformat/avio.c
> > index ab1c19a58d..d53da5cb0c 100644
> > --- a/libavformat/avio.c
> > +++ b/libavformat/avio.c
> > @@ -354,10 +354,15 @@ fail:
> > }
> > 
> > static inline int retry_transfer_wrapper(URLContext *h, uint8_t
> > *buf,
> > +                                         const uint8_t *cbuf,
> >                                          int size, int size_min,
> > -                                         int
> > (*transfer_func)(URLContext *h,
> > -                                                             
> > uint8_t *buf,
> > -                                                              int
> > size))
> > +                                         int
> > (*read_func)(URLContext *h,
> > +                                                          uint8_t
> > *buf,
> > +                                                          int
> > size),
> > +                                         int
> > (*write_func)(URLContext *h,
> > +                                                           const
> > uint8_t *buf,
> > +                                                           int
> > size),
> > +                                         int read)
> 
> These extra parameters are very ugly, can't we think of another way
> to 
> properly support this?
> 
> One idea is putting retry_transfer_wrapper in a template file and
> include 
> it twice with proper defines-s for the read and write flavours.

Seems like a lot of work for a function that's internal to avio.c

/Tomas


More information about the ffmpeg-devel mailing list