@@ -510,10 +510,11 @@ OFString *ret; last = 0; in_entity = NO; ret = [OFMutableString string]; + ret->is_utf8 = is_utf8; for (i = 0; i < length; i++) { if (!in_entity && string[i] == '&') { [ret appendCStringWithoutUTF8Checking: string + last length: i - last]; @@ -523,19 +524,24 @@ } else if (in_entity && string[i] == ';') { char *entity = string + last; size_t len = i - last; if (len == 2 && !memcmp(entity, "lt", 2)) - [ret appendString: @"<"]; + [ret appendCStringWithoutUTF8Checking: "<" + length: 1]; else if (len == 2 && !memcmp(entity, "gt", 2)) - [ret appendString: @">"]; + [ret appendCStringWithoutUTF8Checking: ">" + length: 1]; else if (len == 4 && !memcmp(entity, "quot", 4)) - [ret appendString: @"\""]; + [ret appendCStringWithoutUTF8Checking: "\"" + length: 1]; else if (len == 4 && !memcmp(entity, "apos", 4)) - [ret appendString: @"'"]; + [ret appendCStringWithoutUTF8Checking: "'" + length: 1]; else if (len == 3 && !memcmp(entity, "amp", 3)) - [ret appendString: @"&"]; + [ret appendCStringWithoutUTF8Checking: "&" + length: 1]; else if (entity[0] == '#') { OFAutoreleasePool *pool; OFString *tmp; pool = [[OFAutoreleasePool alloc] init];