[FFmpeg-devel] Fwd: Questionable libav code

Ratin ratin3 at gmail.com
Sun Feb 7 18:38:06 CET 2016


On Tue, Feb 2, 2016 at 11:41 PM, wm4 <nfxjfg at googlemail.com> wrote:

> 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.
>

 Sorry a bit confused, what happens when second argument is not malloc'ed,
somebody uses

AVPacket pkt;
add_to_pktbuf(packet_list, &pkt, plastpkt)


_______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list