Skip to content

Commit

Permalink
Fix JS_HasException() when null is thrown (#313)
Browse files Browse the repository at this point in the history
Use `JS_UNINITIALIZED` instead of `JS_NULL` when no exception is pending, so `null` can be thrown and distinguished from no exception pending.
  • Loading branch information
kasperisager authored Jul 17, 2024
1 parent b3715f7 commit 5417ab0
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions quickjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1681,7 +1681,7 @@ JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque)
rt->stack_size = JS_DEFAULT_STACK_SIZE;
JS_UpdateStackTop(rt);

rt->current_exception = JS_NULL;
rt->current_exception = JS_UNINITIALIZED;

return rt;
fail:
Expand Down Expand Up @@ -6398,13 +6398,13 @@ JSValue JS_GetException(JSContext *ctx)
JSValue val;
JSRuntime *rt = ctx->rt;
val = rt->current_exception;
rt->current_exception = JS_NULL;
rt->current_exception = JS_UNINITIALIZED;
return val;
}

JS_BOOL JS_HasException(JSContext *ctx)
{
return !JS_IsNull(ctx->rt->current_exception);
return !JS_IsUninitialized(ctx->rt->current_exception);
}

static void dbuf_put_leb128(DynBuf *s, uint32_t v)
Expand Down Expand Up @@ -15321,7 +15321,7 @@ static int JS_IteratorClose(JSContext *ctx, JSValueConst enum_obj,

if (is_exception_pending) {
ex_obj = ctx->rt->current_exception;
ctx->rt->current_exception = JS_NULL;
ctx->rt->current_exception = JS_UNINITIALIZED;
res = -1;
} else {
ex_obj = JS_UNDEFINED;
Expand Down Expand Up @@ -18674,7 +18674,7 @@ static JSValue JS_CallInternal(JSContext *caller_ctx, JSValueConst func_obj,
JS_IteratorClose(ctx, sp[-1], TRUE);
} else {
*sp++ = rt->current_exception;
rt->current_exception = JS_NULL;
rt->current_exception = JS_UNINITIALIZED;
pc = b->byte_code_buf + pos;
goto restart;
}
Expand Down

0 comments on commit 5417ab0

Please sign in to comment.