text: /*
   * Copyright (c) 2017 - present Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   */
  
  #include <mutex>
  
  namespace reporting {
  
  struct X {
    int w;
    X* x1;
  };
  
  class Basic {
   public:
    Basic() {}
  
    void test(X& xparam) { xparam.x1->w++; }
  
    void call1() {
      test(x); // race
    }
  
    int test_lock() {
      mutex_.lock();
      call1();
    }
  
    int test_unlock() { call1(); }
  
   private:
    X x;
    std::mutex mutex_;
  };
  } // namespace reporting
  