[FFmpeg-devel] [PATCH v3 4/5] fftools/cmdutils.c: Replace MAX_PATH-sized buffers with dynamically sized ones

Martin Storsjö martin at martin.st
Wed Feb 16 18:08:12 EET 2022


On Wed, 16 Feb 2022, nihil-admirari wrote:

> ---
> fftools/cmdutils.c | 31 +++++++++++++++++++++++++------
> 1 file changed, 25 insertions(+), 6 deletions(-)
>
> diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
> index 4b50e15..ea78897 100644
> --- a/fftools/cmdutils.c
> +++ b/fftools/cmdutils.c
> @@ -62,6 +62,7 @@
> #endif
> #ifdef _WIN32
> #include <windows.h>
> +#include "compat/w32dlfcn.h"
> #endif
>
> static int init_report(const char *env);
> @@ -2065,6 +2066,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
> {
>     FILE *f = NULL;
>     int i;
> +#if HAVE_GETMODULEHANDLE && defined(_WIN32)
> +    char *datadir = NULL;
> +#endif
>     const char *base[3] = { getenv("FFMPEG_DATADIR"),
>                             getenv("HOME"),
>                             FFMPEG_DATADIR, };
> @@ -2074,19 +2078,31 @@ FILE *get_preset_file(char *filename, size_t filename_size,
>         f = fopen(filename, "r");
>     } else {
> #if HAVE_GETMODULEHANDLE && defined(_WIN32)
> -        char datadir[MAX_PATH], *ls;
> +        wchar_t *datadir_w = get_module_filename(NULL);
>         base[2] = NULL;
>
> -        if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1))
> +        if (wchartoansi(datadir_w, &datadir))
> +            datadir = NULL;

Why would you use ansi here? Aren't all internal char based paths supposed 
to be UTF-8, unless passing them to an external API that expects e.g. ACP 
paths?

// Martin



More information about the ffmpeg-devel mailing list