[FFmpeg-devel] [PATCH] Const src in av_packet_clone declaration
wm4
nfxjfg at googlemail.com
Fri May 13 11:47:25 CEST 2016
On Fri, 13 May 2016 01:08:45 +0300
Andriy Lysnevych <andriy.lysnevych at gmail.com> wrote:
> > That's a change that could break source-compatibility with C++, I don't
> think it can be made so easily.
>
> I do not agree. It extends function so it can take as argument both const
> and non-const packets.
>
> Actually I discovered this defect when I was not able to clone const packet
> in C++ project.
const is broken anyway, both in C and C++. I recommend not to use it.
Anyway, example how this change can break:
typedef struct AVPacket AVPacket;
AVPacket *av_packet_clone_old(AVPacket *src);
AVPacket *av_packet_clone_new(const AVPacket *src);
AVPacket *(*unsuspecting_api_user)(AVPacket *src);
void set(void)
{
unsuspecting_api_user = av_packet_clone_old;
unsuspecting_api_user = av_packet_clone_new;
}
Most C compilers will only warn against it, but in C++ it's always a
hard error.
More information about the ffmpeg-devel
mailing list