forked from pool/nodejs-electron
- Update to electron 29.3.1 * ABI break: NODE_MODULE_VERSION is now 121 * Chromium 122.0.6261.156 * Node 20.9.0 * V8 12.2 * The deprecated gpu-process-crashed event on app has been removed. * The deprecated renderer-process-crashed event on app and crashed event on WebContents and <webview> have been removed. * Added WebContentsView and BaseWindow, replacing the now-deprecated BrowserView APIs. * Added new webUtils.getPathForFile method to replace File.path augmentation. * see https://www.electronjs.org/blog/electron-29-0 and https://github.com/electron/electron/releases/tag/v29.0.0 for more * Security fixes for Angle (CVE-2024-3516) and Compositing (CVE-2024-3157) - Drop upstreamed patches * atspi.patch * chromium-117-blink-BUILD-mnemonic.patch * local_frame-local_frame_client-incomplete-WebBackgroundResourceFetchAssets.patch * node-upgrade-llhttp-to-8.patch * policy_templates-deterministic.patch * v8-hide-private-symbols.patch * web_local_frame_client-incomplete-WebBackgroundResourceFetchAssets.patch - Add patches to fix build errors * aarch64-Xclang.patch * absl2023-encapsulated_web_transport-StrCat.patch * boringssl-internal-addc-cxx.patch * chromium-122-avoid-SFINAE-TypeConverter.patch * chromium-122-BookmarkNode-missing-operator.patch * distributed_point_functions-aes_128_fixed_key_hash-missing-StrCat.patch * distributed_point_functions-evaluate_prg_hwy-signature.patch * fake_ssl_socket_client-Wlto-type-mismatch.patch * grid_sizing_tree-Wchanges-meaning.patch * hit_test_request-missing-optional.patch * InternalAllocator-too-many-initializers.patch * mt21_util-flax-vector-conversions.patch * plus_address_types-missing-optional.patch * race_network_request_write_buffer_manager-missing-optional.patch * resolution_monitor-missing-bitset.patch * script_promise_resolver-explicit-specialization.patch * search_engine_choice_service-missing-optional.patch * system-yuv.patch - Replace abseil-remove-unused-targets.patch with chromium-122-abseil-shims.patch - Remove dead code from third_party/ * remove-dawn.patch * remove-openscreen.patch * remove-password-manager-and-policy.patch * remove-puffin.patch * remove-rust.patch * remove AFL-2.0, BSD-Protection and IJG from licence list, because the relevant libraries (xdg-mime, bsdiff and iccjpeg) are no longer shipped. - Leap, Fedora: use bundled re2 * drop replace-StringPiece-with-string_view.patch - Fedora 38: use bundled abseil * drop pending_task_safety_flag-abseil-2022-nullability.patch * drop thread_annotations-fix-build-with-system-abseil.patch - Leap 15.5: Reverse upstream changes to build with old wayland * wayland-proto-31-cursor-shape.patch - Leap 15.5/6: Reverse upstream changes to build with old ffmpeg * Cr122-ffmpeg-new-channel-layout.patch - aarch64: reduce debuginfo due to linker OOM OBS-URL: https://build.opensuse.org/request/show/1169276 OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=141
116 lines
4.9 KiB
Diff
116 lines
4.9 KiB
Diff
From 8b293359cafbc741e7742de824b98fbf87a51b51 Mon Sep 17 00:00:00 2001
|
|
From: Jose Dapena Paz <jdapena@igalia.com>
|
|
Date: Thu, 8 Feb 2024 09:32:57 +0000
|
|
Subject: [PATCH] Do not use templates for ScriptPromiseResolver::ToV8
|
|
implementation
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The usage of templates for reusing the internal implementation of ToV8
|
|
is not making the code simpler. So, inline the implementations.
|
|
|
|
This also fixes a GCC build issue because it was implemented with
|
|
template specializations declared in the class scope, and that is
|
|
hitting the GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85282
|
|
|
|
Bug: 819294
|
|
Change-Id: I51f5a9e0a6e80ac707b630f270179c29fd84b059
|
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5223626
|
|
Commit-Queue: José Dapena Paz <jdapena@igalia.com>
|
|
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
|
|
Cr-Commit-Position: refs/heads/main@{#1257835}
|
|
---
|
|
.../core/v8/script_promise_resolver.h | 60 +++++--------------
|
|
1 file changed, 14 insertions(+), 46 deletions(-)
|
|
|
|
diff --git a/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h b/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h
|
|
index 93cecd06c2814..ae0081b735a67 100644
|
|
--- a/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h
|
|
+++ b/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h
|
|
@@ -316,70 +316,38 @@ class CORE_EXPORT ScriptPromiseResolver
|
|
return V8String(isolate, value);
|
|
}
|
|
|
|
- template <size_t sizeOfValue>
|
|
- static v8::Local<v8::Value> ToV8SignedIntegerInternal(int64_t value,
|
|
- v8::Isolate*);
|
|
-
|
|
- template <>
|
|
- v8::Local<v8::Value> ToV8SignedIntegerInternal<4>(int64_t value,
|
|
- v8::Isolate* isolate) {
|
|
- return v8::Integer::New(isolate, static_cast<int32_t>(value));
|
|
- }
|
|
-
|
|
- template <>
|
|
- v8::Local<v8::Value> ToV8SignedIntegerInternal<8>(int64_t value,
|
|
- v8::Isolate* isolate) {
|
|
- int32_t value_in32_bit = static_cast<int32_t>(value);
|
|
- if (value_in32_bit == value) {
|
|
- return v8::Integer::New(isolate, value_in32_bit);
|
|
- }
|
|
- // V8 doesn't have a 64-bit integer implementation.
|
|
- return v8::Number::New(isolate, value);
|
|
- }
|
|
-
|
|
- template <size_t sizeOfValue>
|
|
- static v8::Local<v8::Value> ToV8UnsignedIntegerInternal(uint64_t value,
|
|
- v8::Isolate*);
|
|
-
|
|
- template <>
|
|
- v8::Local<v8::Value> ToV8UnsignedIntegerInternal<4>(uint64_t value,
|
|
- v8::Isolate* isolate) {
|
|
- return v8::Integer::NewFromUnsigned(isolate, static_cast<uint32_t>(value));
|
|
- }
|
|
-
|
|
- template <>
|
|
- v8::Local<v8::Value> ToV8UnsignedIntegerInternal<8>(uint64_t value,
|
|
- v8::Isolate* isolate) {
|
|
- uint32_t value_in32_bit = static_cast<uint32_t>(value);
|
|
- if (value_in32_bit == value) {
|
|
- return v8::Integer::NewFromUnsigned(isolate, value_in32_bit);
|
|
- }
|
|
- // V8 doesn't have a 64-bit integer implementation.
|
|
- return v8::Number::New(isolate, value);
|
|
- }
|
|
-
|
|
static v8::Local<v8::Value> ToV8(int32_t value,
|
|
v8::Local<v8::Object> creation_context,
|
|
v8::Isolate* isolate) {
|
|
- return ToV8SignedIntegerInternal<sizeof value>(value, isolate);
|
|
+ return v8::Integer::New(isolate, value);
|
|
}
|
|
|
|
static v8::Local<v8::Value> ToV8(int64_t value,
|
|
v8::Local<v8::Object> creation_context,
|
|
v8::Isolate* isolate) {
|
|
- return ToV8SignedIntegerInternal<sizeof value>(value, isolate);
|
|
+ int32_t value_in32_bit = static_cast<int32_t>(value);
|
|
+ if (value_in32_bit == value) {
|
|
+ return v8::Integer::New(isolate, value_in32_bit);
|
|
+ }
|
|
+ // V8 doesn't have a 64-bit integer implementation.
|
|
+ return v8::Number::New(isolate, value);
|
|
}
|
|
|
|
static v8::Local<v8::Value> ToV8(uint32_t value,
|
|
v8::Local<v8::Object> creation_context,
|
|
v8::Isolate* isolate) {
|
|
- return ToV8UnsignedIntegerInternal<sizeof value>(value, isolate);
|
|
+ return v8::Integer::NewFromUnsigned(isolate, value);
|
|
}
|
|
|
|
static v8::Local<v8::Value> ToV8(uint64_t value,
|
|
v8::Local<v8::Object> creation_context,
|
|
v8::Isolate* isolate) {
|
|
- return ToV8UnsignedIntegerInternal<sizeof value>(value, isolate);
|
|
+ uint32_t value_in32_bit = static_cast<uint32_t>(value);
|
|
+ if (value_in32_bit == value) {
|
|
+ return v8::Integer::NewFromUnsigned(isolate, value_in32_bit);
|
|
+ }
|
|
+ // V8 doesn't have a 64-bit integer implementation.
|
|
+ return v8::Number::New(isolate, value);
|
|
}
|
|
|
|
static v8::Local<v8::Value> ToV8(bool value,
|