aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Zilin Zhu <zhuzilinallen@gmail.com> 2022-08-28 03:32:13 +0800
committerGravatar GitHub <noreply@github.com> 2022-08-27 12:32:13 -0700
commit6644c2fd1770dd38d453753ab650bfccacea3e7b (patch)
tree8c2634e9bd899ebb073ce78b757e03341b519c93 /src
parent49447decdd915be32e4c9bcab9a0d72c760ad22b (diff)
downloadbun-6644c2fd1770dd38d453753ab650bfccacea3e7b.tar.gz
bun-6644c2fd1770dd38d453753ab650bfccacea3e7b.tar.zst
bun-6644c2fd1770dd38d453753ab650bfccacea3e7b.zip
Fix ffi uint64_t parameter (#1158)
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/bindings/bindings.cpp2
-rw-r--r--src/bun.js/bindings/headers.h2
-rw-r--r--src/bun.js/ffi.exports.js12
3 files changed, 7 insertions, 9 deletions
diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp
index ddef8c23a..57bc51be2 100644
--- a/src/bun.js/bindings/bindings.cpp
+++ b/src/bun.js/bindings/bindings.cpp
@@ -2023,7 +2023,7 @@ JSC__JSValue JSC__JSValue__fromUInt64NoTruncate(JSC__JSGlobalObject* globalObjec
return JSC::JSValue::encode(JSC::JSValue(JSC::JSBigInt::createFrom(globalObject, val)));
}
-uint64_t JSC__JSValue__toUInt64NoTruncate(JSC__JSValue val)
+uint64_t JSC__JSValue__toUInt64NoTruncate(JSC__JSGlobalObject* arg0, JSC__JSValue val)
{
JSC::JSValue _val = JSC::JSValue::decode(val);
diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h
index 657b11b4f..026cab2ab 100644
--- a/src/bun.js/bindings/headers.h
+++ b/src/bun.js/bindings/headers.h
@@ -546,7 +546,7 @@ CPP_DECL JSC__JSValue JSC__JSValue__toPropertyKeyValue(JSC__JSValue JSValue0, JS
CPP_DECL JSC__JSString* JSC__JSValue__toString(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1);
CPP_DECL JSC__JSString* JSC__JSValue__toString(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1);
CPP_DECL JSC__JSString* JSC__JSValue__toStringOrNull(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1);
-CPP_DECL uint64_t JSC__JSValue__toUInt64NoTruncate(JSC__JSValue JSValue0);
+CPP_DECL uint64_t JSC__JSValue__toUInt64NoTruncate(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue0);
CPP_DECL bWTF__String JSC__JSValue__toWTFString(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1);
CPP_DECL void JSC__JSValue__toZigException(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, ZigException* arg2);
CPP_DECL void JSC__JSValue__toZigString(JSC__JSValue JSValue0, ZigString* arg1, JSC__JSGlobalObject* arg2);
diff --git a/src/bun.js/ffi.exports.js b/src/bun.js/ffi.exports.js
index 8d5374160..a35b508c4 100644
--- a/src/bun.js/ffi.exports.js
+++ b/src/bun.js/ffi.exports.js
@@ -76,7 +76,7 @@ ffiWrappers[FFIType.uint32_t] = function uint32(val) {
};
ffiWrappers[FFIType.i64_fast] = function int64(val) {
if (typeof val === "bigint") {
- if (val < BigInt(Number.MAX_VALUE)) {
+ if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) {
return Number(val).valueOf() || 0;
}
@@ -88,7 +88,7 @@ ffiWrappers[FFIType.i64_fast] = function int64(val) {
ffiWrappers[FFIType.u64_fast] = function u64_fast(val) {
if (typeof val === "bigint") {
- if (val < BigInt(Number.MAX_VALUE) && val > 0) {
+ if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) {
return Number(val).valueOf() || 0;
}
@@ -124,11 +124,9 @@ ffiWrappers[FFIType.uint64_t] = function uint64(val) {
ffiWrappers[FFIType.u64_fast] = function u64_fast(val) {
if (typeof val === "bigint") {
- return val < BigInt(Number.MAX_VALUE)
- ? val <= BigInt(0)
- ? 0
- : Number(val)
- : val;
+ if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0))
+ return Number(val);
+ return val;
}
return typeof val === "number" ? (val <= 0 ? 0 : +val || 0) : +val || 0;