From d8ea7363f5452fc6ddd3011f5a166acc6a4a092c Mon Sep 17 00:00:00 2001 From: Nik Pavlov Date: Thu, 5 Oct 2023 16:57:01 +0000 Subject: [PATCH] Remove unnecessary copy during CefBinaryValue creation (see #3502) --- libcef/common/values_impl.cc | 15 +++++++-------- libcef/common/values_impl.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libcef/common/values_impl.cc b/libcef/common/values_impl.cc index 8cbb36ef2..98e8216c2 100644 --- a/libcef/common/values_impl.cc +++ b/libcef/common/values_impl.cc @@ -493,8 +493,8 @@ CefRefPtr CefBinaryValue::Create(const void* data, return nullptr; } - return new CefBinaryValueImpl(static_cast(const_cast(data)), - data_size); + const auto ptr = static_cast(data); + return new CefBinaryValueImpl(base::make_span(ptr, data_size)); } // static @@ -525,12 +525,11 @@ CefBinaryValueImpl::CefBinaryValueImpl(base::Value* value, bool will_delete) will_delete ? kOwnerWillDelete : kOwnerNoDelete, nullptr) {} -CefBinaryValueImpl::CefBinaryValueImpl(char* data, size_t data_size) - : CefBinaryValueImpl( - new base::Value(std::vector(data, data + data_size)), - nullptr, - kOwnerWillDelete, - nullptr) {} +CefBinaryValueImpl::CefBinaryValueImpl(base::span value) + : CefBinaryValueImpl(new base::Value(value), + nullptr, + kOwnerWillDelete, + nullptr) {} base::Value CefBinaryValueImpl::CopyValue() { CEF_VALUE_VERIFY_RETURN(false, base::Value()); diff --git a/libcef/common/values_impl.h b/libcef/common/values_impl.h index db43299ae..fd0eadbc2 100644 --- a/libcef/common/values_impl.h +++ b/libcef/common/values_impl.h @@ -151,7 +151,7 @@ class CefBinaryValueImpl : public CefValueBase { CefBinaryValueImpl(base::Value* value, bool will_delete); // The data will always be copied. - CefBinaryValueImpl(char* data, size_t data_size); + explicit CefBinaryValueImpl(base::span value); CefBinaryValueImpl(const CefBinaryValueImpl&) = delete; CefBinaryValueImpl& operator=(const CefBinaryValueImpl&) = delete;