Skip to content

Commit d0c1176

Browse files
committed
fix(quickjs): decode unichar string arguments
1 parent bbe4745 commit d0c1176

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

NativeScript/ffi/quickjs/QuickJSFastNativeApi.mm

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1572,18 +1572,25 @@ bool TryFastConvertQuickJSUInt16Argument(napi_env env, napi_value value,
15721572

15731573
JSValue jsValue = ToJSValue(value);
15741574
if (JS_IsString(jsValue)) {
1575-
size_t length = 0;
1576-
const char* str = JS_ToCStringLen(env->context, &length, jsValue);
1575+
size_t byteLength = 0;
1576+
const char* str = JS_ToCStringLen(env->context, &byteLength, jsValue);
15771577
if (str == nullptr) {
15781578
return false;
15791579
}
1580-
if (length != 1) {
1581-
JS_FreeCString(env->context, str);
1580+
1581+
NSString* string = [[NSString alloc] initWithBytes:str
1582+
length:byteLength
1583+
encoding:NSUTF8StringEncoding];
1584+
JS_FreeCString(env->context, str);
1585+
1586+
if (string == nil || [string length] != 1) {
1587+
[string release];
15821588
napi_throw_type_error(env, nullptr, "Expected a single-character string.");
15831589
return false;
15841590
}
1585-
*result = static_cast<uint8_t>(str[0]);
1586-
JS_FreeCString(env->context, str);
1591+
1592+
*result = static_cast<uint16_t>([string characterAtIndex:0]);
1593+
[string release];
15871594
return true;
15881595
}
15891596

0 commit comments

Comments
 (0)