[FFmpeg-devel] Fwd: Questionable libav code

wm4 nfxjfg at googlemail.com
Wed Feb 3 08:41:45 CET 2016


On Tue, 2 Feb 2016 14:31:20 -0800
Ratin <ratin3 at gmail.com> wrote:

> libavcodec has codes like this one (utils.c):
> 
> static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,
>                                AVPacketList **plast_pktl)
> {
>     AVPacketList *pktl = av_mallocz(sizeof(AVPacketList));
>     if (!pktl)
>         return NULL;
> 
>     if (*packet_buffer)
>         (*plast_pktl)->next = pktl;
>     else
>         *packet_buffer = pktl;
> 
>     /* Add the packet in the buffered packet list. */
>     *plast_pktl = pktl;
>     pktl->pkt   = *pkt; <===========================
>     return &pktl->pkt;
> }
> 
> Here a struct variable is meant to be copied over via assignment, is that
> 100% correct to always work the way was intended?  Given that the struct
> pkt is a big struct which has raw bytes that are malloc'd. I was always
> trained to avoid such struct assignment operations. What do people think?

There is no problem at all here.


More information about the ffmpeg-devel mailing list