Verified Commit a81d2117 authored by Kelsey Gilbert's avatar Kelsey Gilbert Committed by Pier Angelo Vendrame
Browse files

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
parent 504bbdd8
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -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");
}

// ----------------------------