From edd6477256f13432efac6673c93d830a7b38fd91 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 1 Jun 2025 04:28:12 +0200 Subject: [PATCH v2 07/11] fftools/textformat/avtextformat: Fix races when initializing formatters Signed-off-by: Andreas Rheinhardt --- fftools/textformat/avtextformat.c | 33 +++++++++++-------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/fftools/textformat/avtextformat.c b/fftools/textformat/avtextformat.c index 81c6b0f0e5..30a017d1a1 100644 --- a/fftools/textformat/avtextformat.c +++ b/fftools/textformat/avtextformat.c @@ -678,31 +678,22 @@ fail: return ret; } -static const AVTextFormatter *registered_formatters[9 + 1]; - -static void formatters_register_all(void) +static const AVTextFormatter *const registered_formatters[] = { - static int initialized; - - if (initialized) - return; - initialized = 1; - - registered_formatters[0] = &avtextformatter_default; - registered_formatters[1] = &avtextformatter_compact; - registered_formatters[2] = &avtextformatter_csv; - registered_formatters[3] = &avtextformatter_flat; - registered_formatters[4] = &avtextformatter_ini; - registered_formatters[5] = &avtextformatter_json; - registered_formatters[6] = &avtextformatter_xml; - registered_formatters[7] = &avtextformatter_mermaid; - registered_formatters[8] = &avtextformatter_mermaidhtml; -} + &avtextformatter_default, + &avtextformatter_compact, + &avtextformatter_csv, + &avtextformatter_flat, + &avtextformatter_ini, + &avtextformatter_json, + &avtextformatter_xml, + &avtextformatter_mermaid, + &avtextformatter_mermaidhtml, + NULL +}; const AVTextFormatter *avtext_get_formatter_by_name(const char *name) { - formatters_register_all(); - for (int i = 0; registered_formatters[i]; i++) { const char *end; if (av_strstart(name, registered_formatters[i]->name, &end) && -- 2.45.2