From 2c3628c630d645fc20ca09aa5efbf0471edecae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 20 May 2026 23:01:28 +0800 Subject: [PATCH] Format (QJS): converts UINT64 to double and drops usage of BigInt --- src/common/impl/format.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/common/impl/format.c b/src/common/impl/format.c index 8ccd8ebf6..f2ece2631 100644 --- a/src/common/impl/format.c +++ b/src/common/impl/format.c @@ -392,7 +392,6 @@ static const char* loadQuickJSState(void) { FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_FreeCString) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_NewStringLen) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_NewArray) - FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_NewBigUint64) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_SetPropertyUint32) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_NewObject) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(libqjs, qjsData, JS_SetPropertyStr) @@ -436,9 +435,15 @@ static void parseQuickJSString(FFstrbuf* buffer, const char* script, uint32_t sc case FF_ARG_TYPE_UINT: value = JS_NewUint32(ctx, *(uint32_t*) arg->value); break; - case FF_ARG_TYPE_UINT64: - value = qjsData.ffJS_NewBigUint64(ctx, *(uint64_t*) arg->value); + case FF_ARG_TYPE_UINT64: { + uint64_t val = *(uint64_t*) arg->value; + if (val <= INT32_MAX) { + value = JS_NewInt32(ctx, (int32_t) val); + } else { + value = JS_NewFloat64(ctx, (double) val); + } break; + } case FF_ARG_TYPE_UINT16: value = JS_NewUint32(ctx, *(uint16_t*) arg->value); break;