[Issue #565] Checking for kCFStringEncodingInvalidId from CFStringConvertIANACharSetNameToEncoding() before getting NSStringEncoding with CFStringConvertEncodingToNSStringEncoding, which may otherwise lead to unexpected behavior

This commit is contained in:
Mattt Thompson 2012-10-31 08:37:47 -07:00
parent d31e23af29
commit 175c3fa451

View file

@ -325,12 +325,15 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat
- (NSString *)responseString { - (NSString *)responseString {
[self.lock lock]; [self.lock lock];
if (!_responseString && self.response && self.responseData) { if (!_responseString && self.response && self.responseData) {
NSStringEncoding textEncoding = NSUTF8StringEncoding; NSStringEncoding stringEncoding = NSUTF8StringEncoding;
if (self.response.textEncodingName) { if (self.response.textEncodingName) {
textEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName)); CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName);
if (IANAEncoding != kCFStringEncodingInvalidId) {
stringEncoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding);
}
} }
self.responseString = [[NSString alloc] initWithData:self.responseData encoding:textEncoding]; self.responseString = [[NSString alloc] initWithData:self.responseData encoding:stringEncoding];
} }
[self.lock unlock]; [self.lock unlock];