mirror of
https://github.com/bellard/quickjs.git
synced 2025-09-27 05:38:45 +03:00
fixed crash in OP_add_loc if the variable is modified in JS_ToPrimitiveFree()
This commit is contained in:
parent
e1c18befb8
commit
1168c215d1
@ -18646,12 +18646,10 @@ static JSValue JS_CallInternal(JSContext *caller_ctx, JSValueConst func_obj,
|
|||||||
*pv = __JS_NewFloat64(ctx, JS_VALUE_GET_FLOAT64(*pv) +
|
*pv = __JS_NewFloat64(ctx, JS_VALUE_GET_FLOAT64(*pv) +
|
||||||
JS_VALUE_GET_FLOAT64(op2));
|
JS_VALUE_GET_FLOAT64(op2));
|
||||||
sp--;
|
sp--;
|
||||||
} else if (JS_VALUE_GET_TAG(*pv) == JS_TAG_STRING) {
|
} else if (JS_VALUE_GET_TAG(*pv) == JS_TAG_STRING &&
|
||||||
|
JS_VALUE_GET_TAG(op2) == JS_TAG_STRING) {
|
||||||
sp--;
|
sp--;
|
||||||
sf->cur_pc = pc;
|
sf->cur_pc = pc;
|
||||||
op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE);
|
|
||||||
if (JS_IsException(op2))
|
|
||||||
goto exception;
|
|
||||||
if (JS_ConcatStringInPlace(ctx, JS_VALUE_GET_STRING(*pv), op2)) {
|
if (JS_ConcatStringInPlace(ctx, JS_VALUE_GET_STRING(*pv), op2)) {
|
||||||
JS_FreeValue(ctx, op2);
|
JS_FreeValue(ctx, op2);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user