folly/experimental/hazptr: mark static local as "library-local"
authorAndrew Gallagher <andrewjcg@fb.com>
Thu, 27 Oct 2016 18:38:46 +0000 (11:38 -0700)
committerFacebook Github Bot <facebook-github-bot-bot@fb.com>
Thu, 27 Oct 2016 18:53:29 +0000 (11:53 -0700)
Summary:
When using `-fvisibility-inlines-hidden` or using C/C++ shared libs
transitively from a Python binary, static locals in inline functions
can potentially have more than one definition at runtime.  This diff
explicitly marks this static local as safe for this scenario.

Reviewed By: djwatson

Differential Revision: D4082831

fbshipit-source-id: 75616ac26a39f44691ef59b889ea555e9daa391b

folly/experimental/hazptr/memory_resource.h

index cf53c806527fc4ea6a61da7526a6e10cef781a10..2c71348455fb49be7b2369b9e78a153fdad400c4 100644 (file)
@@ -48,7 +48,8 @@ memory_resource* new_delete_resource();
 #include <folly/experimental/hazptr/debug.h>
 
 inline memory_resource** default_mr_ptr() {
-  static memory_resource* default_mr = new_delete_resource();
+  /* library-local */ static memory_resource* default_mr =
+      new_delete_resource();
   DEBUG_PRINT(&default_mr << " " << default_mr);
   return &default_mr;
 }