From 71bca736da244e7124854a11440b89a67cd42f3d Mon Sep 17 00:00:00 2001 From: Kelsey Gilbert <jdashg@gmail.com> Date: Wed, 13 Sep 2023 21:50:14 +0000 Subject: [PATCH] Bug 1819497 - Don't race on static bool for initialization. r=gfx-reviewers,aosmond We could do non-racy static init here (e.g. with a static initializer self-calling-closure), but there doesn't seem to be a strong reason for this. Let's just use a switch and get robustness from -Werror=switch. Differential Revision: https://phabricator.services.mozilla.com/D188054 --- dom/canvas/WebGLContextExtensions.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/dom/canvas/WebGLContextExtensions.cpp b/dom/canvas/WebGLContextExtensions.cpp index 70548e62dc6b4..1a75ba827b578 100644 --- a/dom/canvas/WebGLContextExtensions.cpp +++ b/dom/canvas/WebGLContextExtensions.cpp @@ -17,15 +17,10 @@ namespace mozilla { const char* GetExtensionName(const WebGLExtensionID ext) { - static EnumeratedArray<WebGLExtensionID, WebGLExtensionID::Max, const char*> - sExtensionNamesEnumeratedArray; - static bool initialized = false; - - if (!initialized) { - initialized = true; - + switch (ext) { #define WEBGL_EXTENSION_IDENTIFIER(x) \ - sExtensionNamesEnumeratedArray[WebGLExtensionID::x] = #x; + case WebGLExtensionID::x: \ + return #x; WEBGL_EXTENSION_IDENTIFIER(ANGLE_instanced_arrays) WEBGL_EXTENSION_IDENTIFIER(EXT_blend_minmax) @@ -67,9 +62,11 @@ const char* GetExtensionName(const WebGLExtensionID ext) { WEBGL_EXTENSION_IDENTIFIER(WEBGL_provoking_vertex) #undef WEBGL_EXTENSION_IDENTIFIER - } - return sExtensionNamesEnumeratedArray[ext]; + case WebGLExtensionID::Max: + break; + } + MOZ_CRASH("bad WebGLExtensionID"); } // ---------------------------- -- GitLab