mirror of
https://github.com/bellard/quickjs.git
synced 2024-11-24 06:38:12 +08:00
Fix JS_HasException()
when null
is thrown (#313)
Use `JS_UNINITIALIZED` instead of `JS_NULL` when no exception is pending, so `null` can be thrown and distinguished from no exception pending.
This commit is contained in:
parent
b3715f7cb1
commit
5417ab0159
10
quickjs.c
10
quickjs.c
@ -1681,7 +1681,7 @@ JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque)
|
|||||||
rt->stack_size = JS_DEFAULT_STACK_SIZE;
|
rt->stack_size = JS_DEFAULT_STACK_SIZE;
|
||||||
JS_UpdateStackTop(rt);
|
JS_UpdateStackTop(rt);
|
||||||
|
|
||||||
rt->current_exception = JS_NULL;
|
rt->current_exception = JS_UNINITIALIZED;
|
||||||
|
|
||||||
return rt;
|
return rt;
|
||||||
fail:
|
fail:
|
||||||
@ -6398,13 +6398,13 @@ JSValue JS_GetException(JSContext *ctx)
|
|||||||
JSValue val;
|
JSValue val;
|
||||||
JSRuntime *rt = ctx->rt;
|
JSRuntime *rt = ctx->rt;
|
||||||
val = rt->current_exception;
|
val = rt->current_exception;
|
||||||
rt->current_exception = JS_NULL;
|
rt->current_exception = JS_UNINITIALIZED;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
JS_BOOL JS_HasException(JSContext *ctx)
|
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)
|
static void dbuf_put_leb128(DynBuf *s, uint32_t v)
|
||||||
@ -15321,7 +15321,7 @@ static int JS_IteratorClose(JSContext *ctx, JSValueConst enum_obj,
|
|||||||
|
|
||||||
if (is_exception_pending) {
|
if (is_exception_pending) {
|
||||||
ex_obj = ctx->rt->current_exception;
|
ex_obj = ctx->rt->current_exception;
|
||||||
ctx->rt->current_exception = JS_NULL;
|
ctx->rt->current_exception = JS_UNINITIALIZED;
|
||||||
res = -1;
|
res = -1;
|
||||||
} else {
|
} else {
|
||||||
ex_obj = JS_UNDEFINED;
|
ex_obj = JS_UNDEFINED;
|
||||||
@ -18674,7 +18674,7 @@ static JSValue JS_CallInternal(JSContext *caller_ctx, JSValueConst func_obj,
|
|||||||
JS_IteratorClose(ctx, sp[-1], TRUE);
|
JS_IteratorClose(ctx, sp[-1], TRUE);
|
||||||
} else {
|
} else {
|
||||||
*sp++ = rt->current_exception;
|
*sp++ = rt->current_exception;
|
||||||
rt->current_exception = JS_NULL;
|
rt->current_exception = JS_UNINITIALIZED;
|
||||||
pc = b->byte_code_buf + pos;
|
pc = b->byte_code_buf + pos;
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user