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