From a6264e01231c04b5f268f0995f4741939e673111 Mon Sep 17 00:00:00 2001 From: Jean-Charles BERTIN Date: Fri, 19 Dec 2014 09:15:22 +0100 Subject: [PATCH] Fixed XML character encoding conversion. --- Core/Source/DTHTMLParser/DTHTMLParser.m | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Core/Source/DTHTMLParser/DTHTMLParser.m b/Core/Source/DTHTMLParser/DTHTMLParser.m index 0356c1bf..6c85ff95 100644 --- a/Core/Source/DTHTMLParser/DTHTMLParser.m +++ b/Core/Source/DTHTMLParser/DTHTMLParser.m @@ -267,7 +267,7 @@ - (BOOL)parse unsigned long dataSize = [_data length]; // detect encoding if necessary - xmlCharEncoding charEnc = 0; + xmlCharEncoding charEnc = XML_CHAR_ENCODING_NONE; if (!_encoding) { @@ -278,10 +278,15 @@ - (BOOL)parse // convert the encoding // TODO: proper mapping from _encoding to xmlCharEncoding CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(_encoding); - CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc); - const char *enc = CFStringGetCStringPtr(cfencstr, 0); - - charEnc = xmlParseCharEncoding(enc); + if (cfenc != kCFStringEncodingInvalidId) { + CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc); + if (cfencstr != NULL) { + NSString* NS_VALID_UNTIL_END_OF_SCOPE encstr = [NSString stringWithString:(__bridge NSString*)cfencstr]; + const char *enc = [encstr UTF8String]; + + charEnc = xmlParseCharEncoding(enc); + } + } } // create a parse context