[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 {
[self.lock lock];
if (!_responseString && self.response && self.responseData) {
NSStringEncoding textEncoding = NSUTF8StringEncoding;
NSStringEncoding stringEncoding = NSUTF8StringEncoding;
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];