Skip to content

Commit d10f7b0

Browse files
committed
fix: call JSEnter before invoking timer callbacks
1 parent 17a25d8 commit d10f7b0

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

test-app/runtime/src/main/cpp/runtime/exceptions/NativeScriptException.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ void NativeScriptException::ReThrowToNapi(napi_env env) {
6262
}
6363

6464
napi_throw(env, errObj);
65+
66+
// JSLeave
6567
}
6668

6769
void NativeScriptException::ReThrowToJava(napi_env env) {
@@ -198,7 +200,8 @@ napi_value NativeScriptException::GetJavaExceptionFromEnv(napi_env env, const Jn
198200

199201
napi_value msg = ArgConverter::convertToJsString(env, errMsg);
200202
napi_value errObj;
201-
napi_create_error(env, nullptr, msg, &errObj);
203+
napi_value code = ArgConverter::convertToJsString(env, "0", 1);
204+
napi_create_error(env, code, msg, &errObj);
202205

203206
jint javaObjectID = objectManager->GetOrCreateObjectId((jobject)exc);
204207
auto nativeExceptionObject = objectManager->GetJsObjectByJavaObject(javaObjectID);

test-app/runtime/src/main/cpp/runtime/timers/Timers.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ int Timers::PumpTimerLoopCallback(int fd, int events, void *data) {
279279

280280
auto it = thiz->timerMap_.find(timerId);
281281
if (it != thiz->timerMap_.end()) {
282+
JSEnter
282283
auto task = it->second;
283284
// task is no longer in queue to be executed
284285
task->queued_ = false;
@@ -292,6 +293,7 @@ int Timers::PumpTimerLoopCallback(int fd, int events, void *data) {
292293
thiz->addTask(task);
293294
}
294295

296+
295297
napi_value cb = napi_util::get_ref_value(env, task->callback_);
296298
size_t argc = task->args_ == nullptr ? 0 : task->args_->size();
297299
if (argc > 0) {
@@ -318,6 +320,8 @@ int Timers::PumpTimerLoopCallback(int fd, int events, void *data) {
318320
napi_delete_reference(env, task->thisArg);
319321
}
320322

323+
JSLeave
324+
321325
thiz->nesting = 0;
322326
}
323327
thiz->bufferFull.notify_one();

0 commit comments

Comments
 (0)