// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/debug/crash_logging.h" namespace base { namespace debug { namespace { CrashKeyImplementation* g_crash_key_impl = nullptr; } // namespace CrashKeyString* AllocateCrashKeyString(const char name[], CrashKeySize value_length) { if (!g_crash_key_impl) return nullptr; return g_crash_key_impl->Allocate(name, value_length); } void SetCrashKeyString(CrashKeyString* crash_key, base::StringPiece value) { if (!g_crash_key_impl || !crash_key) return; g_crash_key_impl->Set(crash_key, value); } void ClearCrashKeyString(CrashKeyString* crash_key) { if (!g_crash_key_impl || !crash_key) return; g_crash_key_impl->Clear(crash_key); } ScopedCrashKeyString::ScopedCrashKeyString(CrashKeyString* crash_key, base::StringPiece value) : crash_key_(crash_key) { SetCrashKeyString(crash_key_, value); } ScopedCrashKeyString::~ScopedCrashKeyString() { ClearCrashKeyString(crash_key_); } void SetCrashKeyImplementation(std::unique_ptr impl) { delete g_crash_key_impl; g_crash_key_impl = impl.release(); } } // namespace debug } // namespace base