[FFmpeg-devel] [PATCH v2] avformat/options: don't call avformat_free_context() within avformat_alloc_context()
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sun Oct 20 02:42:00 EEST 2019
James Almer:
> avformat_free_context() expects AVFormatContext->internal to not be NULL.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavformat/options.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/libavformat/options.c b/libavformat/options.c
> index c188c23506..756f4d53c5 100644
> --- a/libavformat/options.c
> +++ b/libavformat/options.c
> @@ -144,15 +144,17 @@ static void avformat_get_context_defaults(AVFormatContext *s)
> AVFormatContext *avformat_alloc_context(void)
> {
> AVFormatContext *ic;
> + AVFormatInternal *internal;
> ic = av_malloc(sizeof(AVFormatContext));
> if (!ic) return ic;
> - avformat_get_context_defaults(ic);
>
> - ic->internal = av_mallocz(sizeof(*ic->internal));
> - if (!ic->internal) {
> - avformat_free_context(ic);
> + internal = av_mallocz(sizeof(AVFormatInternal));
> + if (!internal) {
> + av_free(ic);
> return NULL;
> }
> + avformat_get_context_defaults(ic);
> + ic->internal = internal;
> ic->internal->offset = AV_NOPTS_VALUE;
> ic->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE;
> ic->internal->shortest_end = AV_NOPTS_VALUE;
>
Isn't it better (more auto-like) to use sizeof(*internal)? Apart from
that: LGTM.
- Andreas
More information about the ffmpeg-devel
mailing list