electron/patches/node/fix_prevent_changing_functiontemplateinfo_after_publish.patch
electron-roller[bot] de607cbcde
chore: bump node to v18.14.0 (main) (#37129)
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

https://github.com/nodejs/node/pull/44376

* test: fix test broken under --node-builtin-modules-path

https://github.com/nodejs/node/pull/45894

* build: add option to disable shared readonly heap

https://github.com/nodejs/node/pull/45887

* src: remove unnecessary semicolons

https://github.com/nodejs/node/pull/46171

* src: remove return after abort

https://github.com/nodejs/node/pull/46172

* chore: fixup patch indices

* test_runner: parse yaml

https://github.com/nodejs/node/pull/45815

* src: use simdutf for converting externalized builtins to UTF-16

https://github.com/nodejs/node/pull/46119

* src: rename internal module declaration as internal bindings

https://github.com/nodejs/node/pull/45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2023-02-07 15:51:07 -05:00

61 lines
2.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Sun, 23 Oct 2022 23:36:19 +0200
Subject: fix: prevent changing FunctionTemplateInfo after publish
Refs https://chromium-review.googlesource.com/c/v8/v8/+/2718147
Fixes an issue where Node.js would try to call SetClassName on a
FunctionTemplate twice in some cases. The above CL made it so that
V8 CHECKs when this occurs. It is fixed by ensuring SetClassName
is only called once.
This should be upstreamed.
diff --git a/src/histogram.cc b/src/histogram.cc
index 3a3228ddc9eb6b53efc0721466479a9f62cd8967..175a67840348ca507d6e8b29835e5ab3b6d3e71a 100644
--- a/src/histogram.cc
+++ b/src/histogram.cc
@@ -340,8 +340,9 @@ void HistogramBase::RegisterExternalReferences(
}
void HistogramBase::Initialize(Environment* env, Local<Object> target) {
- SetConstructorFunction(
- env->context(), target, "Histogram", GetConstructorTemplate(env));
+ SetConstructorFunction(env->context(), target, "Histogram",
+ GetConstructorTemplate(env),
+ SetConstructorFunctionFlag::NONE);
}
BaseObjectPtr<BaseObject> HistogramBase::HistogramTransferData::Deserialize(
@@ -367,6 +368,7 @@ Local<FunctionTemplate> IntervalHistogram::GetConstructorTemplate(
Isolate* isolate = env->isolate();
tmpl = NewFunctionTemplate(isolate, nullptr);
tmpl->Inherit(HandleWrap::GetConstructorTemplate(env));
+ tmpl->SetClassName(OneByteString(isolate, "Histogram"));
tmpl->InstanceTemplate()->SetInternalFieldCount(
HistogramBase::kInternalFieldCount);
SetProtoMethodNoSideEffect(isolate, tmpl, "count", GetCount);
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index d1296fe20c290bd137cb0aa0c077d1672c18c7a1..1c0f54286f9269efa436ba0fbc730766224891c0 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -1495,13 +1495,16 @@ static void InitMessaging(Local<Object> target,
t->Inherit(BaseObject::GetConstructorTemplate(env));
t->InstanceTemplate()->SetInternalFieldCount(
JSTransferable::kInternalFieldCount);
- SetConstructorFunction(context, target, "JSTransferable", t);
+ t->SetClassName(OneByteString(isolate, "JSTransferable"));
+ SetConstructorFunction(context, target, "JSTransferable", t,
+ SetConstructorFunctionFlag::NONE);
}
SetConstructorFunction(context,
target,
env->message_port_constructor_string(),
- GetMessagePortConstructorTemplate(env));
+ GetMessagePortConstructorTemplate(env),
+ SetConstructorFunctionFlag::NONE);
// These are not methods on the MessagePort prototype, because
// the browser equivalents do not provide them.