Browse Source

chore: use `std::forward()` in `ConvertToV8()` (#31817)

The variable `input` is accepted by a universal reference, so it doesn't
make sense to cast a potential lvalue reference into an rvalue
reference. In case `input` is an lvalue reference, we should rather
forward the value as is to `ToV8()`.

Signed-off-by: Darshan Sen <[email protected]>
Darshan Sen 3 years ago
parent
commit
25f2abb64d

+ 1 - 1
shell/common/gin_converters/std_converter.h

@@ -21,7 +21,7 @@ namespace gin {
 template <typename T>
 v8::Local<v8::Value> ConvertToV8(v8::Isolate* isolate, T&& input) {
   return Converter<typename std::remove_reference<T>::type>::ToV8(
-      isolate, std::move(input));
+      isolate, std::forward<T>(input));
 }
 
 #if !defined(OS_LINUX) && !defined(OS_FREEBSD)

+ 2 - 2
shell/renderer/api/electron_api_context_bridge.cc

@@ -282,9 +282,9 @@ v8::MaybeLocal<v8::Value> PassValueToOtherContext(
 
     ignore_result(source_promise->Then(
         source_context,
-        gin::ConvertToV8(destination_context->GetIsolate(), then_cb)
+        gin::ConvertToV8(destination_context->GetIsolate(), std::move(then_cb))
             .As<v8::Function>(),
-        gin::ConvertToV8(destination_context->GetIsolate(), catch_cb)
+        gin::ConvertToV8(destination_context->GetIsolate(), std::move(catch_cb))
             .As<v8::Function>()));
 
     object_cache->CacheProxiedObject(value, proxied_promise_handle);