Message ID | 20240117092233.8503-1-anton@khirnov.net |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/6] fftools/ffprobe: make option strings dynamically allocated | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
> On Jan 17, 2024, at 17:22, Anton Khirnov <anton@khirnov.net> wrote: > > Do not store the supplied arg pointer directly. While that is valid for > now, arg will become ephemeral in the future commits. > --- > fftools/ffprobe.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c > index f00ba48620..3a7aae3572 100644 > --- a/fftools/ffprobe.c > +++ b/fftools/ffprobe.c > @@ -3827,8 +3827,10 @@ static int opt_input_file(void *optctx, const char *arg) > return AVERROR(EINVAL); > } > if (!strcmp(arg, "-")) > - arg = "fd:"; > - input_filename = arg; > + arg = "pipe:"; Does the change of protocol on purpose, and why? > + input_filename = av_strdup(arg); > + if (!input_filename) > + return AVERROR(ENOMEM); > > return 0; > } > @@ -3849,15 +3851,18 @@ static int opt_output_file_o(void *optctx, const char *opt, const char *arg) > } > if (!strcmp(arg, "-")) > arg = "fd:"; > - output_filename = arg; > + output_filename = av_strdup(arg); > + if (!output_filename) > + return AVERROR(ENOMEM); > > return 0; > } > > static int opt_print_filename(void *optctx, const char *opt, const char *arg) > { > - print_input_filename = arg; > - return 0; > + av_freep(&print_input_filename); > + print_input_filename = av_strdup(arg); > + return print_input_filename ? 0 : AVERROR(ENOMEM); > } > > void show_help_default(const char *opt, const char *arg) > @@ -4287,6 +4292,9 @@ int main(int argc, char **argv) > > end: > av_freep(&output_format); > + av_freep(&output_filename); > + av_freep(&input_filename); > + av_freep(&print_input_filename); > av_freep(&read_intervals); > av_hash_freep(&hash); > > -- > 2.42.0 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Quoting Zhao Zhili (2024-01-17 12:22:10) > > > > On Jan 17, 2024, at 17:22, Anton Khirnov <anton@khirnov.net> wrote: > > > > Do not store the supplied arg pointer directly. While that is valid for > > now, arg will become ephemeral in the future commits. > > --- > > fftools/ffprobe.c | 18 +++++++++++++----- > > 1 file changed, 13 insertions(+), 5 deletions(-) > > > > diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c > > index f00ba48620..3a7aae3572 100644 > > --- a/fftools/ffprobe.c > > +++ b/fftools/ffprobe.c > > @@ -3827,8 +3827,10 @@ static int opt_input_file(void *optctx, const char *arg) > > return AVERROR(EINVAL); > > } > > if (!strcmp(arg, "-")) > > - arg = "fd:"; > > - input_filename = arg; > > + arg = "pipe:"; > > Does the change of protocol on purpose, and why? Good catch, it was a rebase fail. Fixed locally. Thanks,
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index f00ba48620..3a7aae3572 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -3827,8 +3827,10 @@ static int opt_input_file(void *optctx, const char *arg) return AVERROR(EINVAL); } if (!strcmp(arg, "-")) - arg = "fd:"; - input_filename = arg; + arg = "pipe:"; + input_filename = av_strdup(arg); + if (!input_filename) + return AVERROR(ENOMEM); return 0; } @@ -3849,15 +3851,18 @@ static int opt_output_file_o(void *optctx, const char *opt, const char *arg) } if (!strcmp(arg, "-")) arg = "fd:"; - output_filename = arg; + output_filename = av_strdup(arg); + if (!output_filename) + return AVERROR(ENOMEM); return 0; } static int opt_print_filename(void *optctx, const char *opt, const char *arg) { - print_input_filename = arg; - return 0; + av_freep(&print_input_filename); + print_input_filename = av_strdup(arg); + return print_input_filename ? 0 : AVERROR(ENOMEM); } void show_help_default(const char *opt, const char *arg) @@ -4287,6 +4292,9 @@ int main(int argc, char **argv) end: av_freep(&output_format); + av_freep(&output_filename); + av_freep(&input_filename); + av_freep(&print_input_filename); av_freep(&read_intervals); av_hash_freep(&hash);