Index: base/strings/sys_string_conversions_mac.mm |
diff --git a/base/strings/sys_string_conversions_mac.mm b/base/strings/sys_string_conversions_mac.mm |
index 32fe89cc3672672a07dc5ad0c02e7d0ef73deb05..2267cee4193a45a93375b5a6b02882e9ec195bfd 100644 |
--- a/base/strings/sys_string_conversions_mac.mm |
+++ b/base/strings/sys_string_conversions_mac.mm |
@@ -93,13 +93,14 @@ static OutStringType STLStringToSTLStringWithEncodingsT( |
out_encoding); |
} |
-// Given an STL string |in| with an encoding specified by |in_encoding|, |
-// return it as a CFStringRef. Returns NULL on failure. |
-template<typename StringType> |
+// Given an STL string |in| and length of string |in_length| with an |
+// encoding specified by |in_encoding|, return it as a CFStringRef. |
+// Returns NULL on failure. |
+template <typename StringType> |
static CFStringRef STLStringToCFStringWithEncodingsT( |
const StringType& in, |
+ typename StringType::size_type in_length, |
CFStringEncoding in_encoding) { |
- typename StringType::size_type in_length = in.length(); |
if (in_length == 0) |
return CFSTR(""); |
@@ -111,6 +112,15 @@ static CFStringRef STLStringToCFStringWithEncodingsT( |
false); |
} |
+// Given an STL string |in| with an encoding specified by |in_encoding|, |
+// return it as a CFStringRef. Returns NULL on failure. |
+template <typename StringType> |
+static CFStringRef STLStringToCFStringWithEncodingsT( |
+ const StringType& in, |
+ CFStringEncoding in_encoding) { |
+ return STLStringToCFStringWithEncodingsT(in, in.length(), in_encoding); |
+} |
+ |
// Specify the byte ordering explicitly, otherwise CFString will be confused |
// when strings don't carry BOMs, as they typically won't. |
static const CFStringEncoding kNarrowStringEncoding = kCFStringEncodingUTF8; |
@@ -152,6 +162,11 @@ CFStringRef SysUTF16ToCFStringRef(const string16& utf16) { |
return STLStringToCFStringWithEncodingsT(utf16, kMediumStringEncoding); |
} |
+CFStringRef SysUTF16ToCFStringRef(const string16& utf16, int string_length) { |
+ return STLStringToCFStringWithEncodingsT(utf16, string_length, |
+ kMediumStringEncoding); |
+} |
+ |
NSString* SysUTF8ToNSString(const std::string& utf8) { |
return (NSString*)base::mac::CFTypeRefToNSObjectAutorelease( |
SysUTF8ToCFStringRef(utf8)); |
@@ -162,6 +177,11 @@ NSString* SysUTF16ToNSString(const string16& utf16) { |
SysUTF16ToCFStringRef(utf16)); |
} |
+NSString* SysUTF16ToNSString(const string16& utf16, int string_length) { |
+ return (NSString*)base::mac::CFTypeRefToNSObjectAutorelease( |
+ SysUTF16ToCFStringRef(utf16, string_length)); |
+} |
+ |
std::string SysCFStringRefToUTF8(CFStringRef ref) { |
return CFStringToSTLStringWithEncodingT<std::string>(ref, |
kNarrowStringEncoding); |