aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local/StringView.h
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/StringView.h
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/StringView.h')
-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.