// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/win/hstring_reference.h" #include #include #include #include "base/check_op.h" #include "base/numerics/safe_conversions.h" namespace base::win { HStringReference::HStringReference(const wchar_t* str, size_t length) { // String must be null terminated for WindowsCreateStringReference. // nullptr str is OK so long as the length is 0. DCHECK(str ? str[length] == L'\0' : length == 0); const HRESULT hr = ::WindowsCreateStringReference( str, checked_cast(length), &hstring_header_, &hstring_); DCHECK_EQ(hr, S_OK); } HStringReference::HStringReference(const wchar_t* str) : HStringReference(str, str ? wcslen(str) : 0) {} } // namespace base::win