[FFmpeg-devel] Fwd: Questionable libav code

Ratin ratin3 at gmail.com
Tue Feb 2 23:31:20 CET 2016


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?

Ratin


More information about the ffmpeg-devel mailing list