diff mbox series

[FFmpeg-devel,1/6] fftools/ffprobe: make option strings dynamically allocated

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

Checks

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

Commit Message

Anton Khirnov Jan. 17, 2024, 9:22 a.m. UTC
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(-)

Comments

Zhao Zhili Jan. 17, 2024, 11:22 a.m. UTC | #1
> 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".
Anton Khirnov Jan. 17, 2024, 12:32 p.m. UTC | #2
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 mbox series

Patch

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);