Skip to content

Commit 5874ad5

Browse files
committed
fix: skip BOM for utf-16
1 parent 8467b04 commit 5874ad5

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

dart_native/ios/Classes/native_runtime.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ _dispatch_get_main_queue(void);
6666
DN_EXTERN void
6767
native_mark_autoreleasereturn_object(id object);
6868

69-
DN_EXTERN const void *
69+
DN_EXTERN const uint16_t *
7070
native_convert_nsstring_to_utf16(NSString *string, NSUInteger *length);
7171

7272
#pragma mark - Dart VM API

dart_native/ios/Classes/native_runtime.mm

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,12 +377,16 @@
377377
}];
378378
}
379379

380-
const void *
380+
const uint16_t *
381381
native_convert_nsstring_to_utf16(NSString *string, NSUInteger *length) {
382382
NSData *data = [string dataUsingEncoding:NSUTF16StringEncoding];
383383
// UTF16, 2-byte per unit
384384
*length = data.length / 2;
385-
return data.bytes;
385+
uint16_t *result = (uint16_t *)data.bytes;
386+
if (*result == 0xFEFF || *result == 0xFFFE) { // skip BOM
387+
result++;
388+
}
389+
return result;
386390
}
387391

388392
#pragma mark Dart VM API Init

0 commit comments

Comments
 (0)