Skip to content

Commit e77be01

Browse files
Merge branch 'caleb/fix/this' into philippe/pyTypeFactory-cleanup
2 parents a2d818a + 74ceb71 commit e77be01

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

include/JobQueue.hh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
class JobQueue : public JS::JobQueue {
2525

2626
public:
27-
explicit JobQueue(JSContext *cx) : finalizationRegistryCallbacks(cx) {}
27+
explicit JobQueue(JSContext *cx);
2828
~JobQueue() = default;
2929

3030
/**
@@ -97,7 +97,7 @@ bool runFinalizationRegistryCallbacks(JSContext *cx);
9797
private:
9898

9999
using FunctionVector = JS::GCVector<JSFunction *, 0, js::SystemAllocPolicy>;
100-
JS::PersistentRooted<FunctionVector> finalizationRegistryCallbacks;
100+
JS::PersistentRooted<FunctionVector> *finalizationRegistryCallbacks;
101101

102102
/**
103103
* @brief Capture this JobQueue's current job queue as a SavedJobQueue and return it,

src/JobQueue.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020

2121
#include <stdexcept>
2222

23+
JobQueue::JobQueue(JSContext *cx) {
24+
finalizationRegistryCallbacks = new JS::PersistentRooted<FunctionVector>(cx);
25+
}
26+
2327
JSObject *JobQueue::getIncumbentGlobal(JSContext *cx) {
2428
return JS::CurrentGlobalOrNull(cx);
2529
}
@@ -113,13 +117,13 @@ bool sendJobToMainLoop(PyObject *pyFunc) {
113117
}
114118

115119
void JobQueue::queueFinalizationRegistryCallback(JSFunction *callback) {
116-
mozilla::Unused << finalizationRegistryCallbacks.append(callback);
120+
mozilla::Unused << finalizationRegistryCallbacks->append(callback);
117121
}
118122

119123
bool JobQueue::runFinalizationRegistryCallbacks(JSContext *cx) {
120124
bool ranCallbacks = false;
121125
JS::Rooted<FunctionVector> callbacks(cx);
122-
std::swap(callbacks.get(), finalizationRegistryCallbacks.get());
126+
std::swap(callbacks.get(), finalizationRegistryCallbacks->get());
123127
for (JSFunction *f: callbacks) {
124128
JS::ExposeObjectToActiveJS(JS_GetFunctionObject(f));
125129

src/modules/pythonmonkey/pythonmonkey.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,8 +254,8 @@ PyTypeObject JSObjectItemsProxyType = {
254254

255255
static void cleanup() {
256256
delete autoRealm;
257-
if (GLOBAL_CX) JS_DestroyContext(GLOBAL_CX);
258257
delete global;
258+
if (GLOBAL_CX) JS_DestroyContext(GLOBAL_CX);
259259
delete JOB_QUEUE;
260260
JS_ShutDown();
261261
}

0 commit comments

Comments
 (0)