aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2017-11-30 13:41:26 -0500
committerGravatar GitHub <noreply@github.com>2017-11-30 13:41:26 -0500
commit4ec5f00b1dec8220c1e458d852eecd602dd56b8f (patch)
tree5049bf41cb1a96085c6d4ad11b747f415ac05d46 /Firestore/Source/Local
parent072c3ae93df4e6363ad1b6cfd239877578b5b00b (diff)
Fix StringView to properly convert NSStrings (#509)
NSStrings are utf16, so NSString::length returns the number of utf16 characters present in the string. When the string is entirely made up of US-ASCII characters, everything's fine. But when characters requiring 16 bits are present, the size calculations were incorrect. Fixed by calculating the length based on the destination character set (i.e. UTF8).
Diffstat (limited to 'Firestore/Source/Local')
-rw-r--r--Firestore/Source/Local/StringView.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/Firestore/Source/Local/StringView.h b/Firestore/Source/Local/StringView.h
index 799baf8..b81b7b5 100644
--- a/Firestore/Source/Local/StringView.h
+++ b/Firestore/Source/Local/StringView.h
@@ -46,7 +46,8 @@ class StringView {
// Creates a StringView from an NSString. When StringView is an argument type
// into which an NSString* is passed, the caller should ensure that the
// NSString is retained.
- StringView(NSString *str) : data_([str UTF8String]), size_(str.length) {
+ StringView(NSString *str)
+ : data_([str UTF8String]), size_([str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]) {
}
// Creates a StringView from the given char* pointer with an explicit size.