[FFmpeg-devel] [PATCH v2 2/3] avformat/tee: use av_dict_pop
Marvin Scholz
epirat07 at gmail.com
Sun Jun 25 13:49:06 EEST 2023
This is a well-defined way to "steal" the value of the dict entry.
---
libavformat/tee.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/libavformat/tee.c b/libavformat/tee.c
index cb555f52fd..70f3f2eb29 100644
--- a/libavformat/tee.c
+++ b/libavformat/tee.c
@@ -157,6 +157,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
{
int i, ret;
AVDictionary *options = NULL, *bsf_options = NULL;
+ char *entry_val = NULL;
AVDictionaryEntry *entry;
char *filename;
char *format = NULL, *select = NULL, *on_fail = NULL;
@@ -171,15 +172,15 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
return ret;
#define CONSUME_OPTION(option, field, action) do { \
- if ((entry = av_dict_get(options, option, NULL, 0))) { \
- field = entry->value; \
+ if ((!av_dict_pop(&options, option, NULL, &entry_val, 0))) { \
+ field = entry_val; \
{ action } \
- av_dict_set(&options, option, NULL, 0); \
+ av_freep(&entry_val); \
} \
} while (0)
#define STEAL_OPTION(option, field) \
CONSUME_OPTION(option, field, \
- entry->value = NULL; /* prevent it from being freed */)
+ entry_val = NULL; /* prevent it from being freed */)
#define PROCESS_OPTION(option, field, function, on_error) \
CONSUME_OPTION(option, field, if ((ret = function) < 0) { { on_error } goto end; })
--
2.37.0 (Apple Git-136)
More information about the ffmpeg-devel
mailing list