From faf4f6da6ffbd7e44faa49847778e08db889b249 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 1 Jun 2025 04:28:12 +0200 Subject: [PATCH 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 6c826802f5..88bed6b18a 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++) if (!strcmp(registered_formatters[i]->name, name)) return registered_formatters[i]; -- 2.45.2