fix JS_ToNumber

This commit is contained in:
2026-02-18 14:14:44 -06:00
parent 91b73f923a
commit 42dc7243f3

View File

@@ -3955,8 +3955,10 @@ JSValue JS_ToNumber (JSContext *ctx, JSValue val) {
ret = val;
break;
case JS_TAG_BOOL:
ret = JS_NewInt32 (ctx, JS_ToBool (ctx, val));
break;
case JS_TAG_NULL:
ret = JS_NewInt32 (ctx, JS_VALUE_GET_INT (val));
ret = JS_NewInt32 (ctx, 0);
break;
case JS_TAG_STRING_IMM:
return JS_ThrowTypeError (ctx, "cannot convert text to a number");
@@ -4015,10 +4017,14 @@ redo:
tag = JS_VALUE_GET_NORM_TAG (val);
switch (tag) {
case JS_TAG_INT:
case JS_TAG_BOOL:
case JS_TAG_NULL:
ret = JS_VALUE_GET_INT (val);
break;
case JS_TAG_BOOL:
ret = JS_VALUE_GET_BOOL (val);
break;
case JS_TAG_NULL:
ret = 0;
break;
case JS_TAG_EXCEPTION:
*pres = 0;
return -1;
@@ -4064,10 +4070,14 @@ redo:
tag = JS_VALUE_GET_NORM_TAG (val);
switch (tag) {
case JS_TAG_INT:
case JS_TAG_BOOL:
case JS_TAG_NULL:
*pres = JS_VALUE_GET_INT (val);
return 0;
case JS_TAG_BOOL:
*pres = JS_VALUE_GET_BOOL (val);
return 0;
case JS_TAG_NULL:
*pres = 0;
return 0;
case JS_TAG_EXCEPTION:
*pres = 0;
return -1;
@@ -4115,10 +4125,14 @@ redo:
tag = JS_VALUE_GET_NORM_TAG (val);
switch (tag) {
case JS_TAG_INT:
case JS_TAG_BOOL:
case JS_TAG_NULL:
ret = JS_VALUE_GET_INT (val);
break;
case JS_TAG_BOOL:
ret = JS_VALUE_GET_BOOL (val);
break;
case JS_TAG_NULL:
ret = 0;
break;
case JS_TAG_FLOAT64: {
JSFloat64Union u;
double d;
@@ -4162,10 +4176,14 @@ redo:
tag = JS_VALUE_GET_NORM_TAG (val);
switch (tag) {
case JS_TAG_INT:
case JS_TAG_BOOL:
case JS_TAG_NULL:
ret = JS_VALUE_GET_INT (val);
break;
case JS_TAG_BOOL:
ret = JS_VALUE_GET_BOOL (val);
break;
case JS_TAG_NULL:
ret = 0;
break;
case JS_TAG_FLOAT64: {
JSFloat64Union u;
double d;