1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-24 13:33:01 +03:00

encoding: Fix xmlParseCharEncoding

Make "UTF-16" return the UTF16LE handler as before.

Fix error return.
This commit is contained in:
Nick Wellnhofer
2024-07-04 15:14:54 +02:00
parent 10082a3d54
commit f86d17c163

View File

@@ -513,6 +513,23 @@ xmlCompareEncTableEntries(const void *vkey, const void *ventry) {
return(xmlStrcasecmp(BAD_CAST key, BAD_CAST entry->name)); return(xmlStrcasecmp(BAD_CAST key, BAD_CAST entry->name));
} }
static xmlCharEncoding
xmlParseCharEncodingInternal(const char *name)
{
const xmlEncTableEntry *entry;
if (name == NULL)
return(XML_CHAR_ENCODING_NONE);
entry = bsearch(name, xmlEncTable,
sizeof(xmlEncTable) / sizeof(xmlEncTable[0]),
sizeof(xmlEncTable[0]), xmlCompareEncTableEntries);
if (entry != NULL)
return(entry->enc);
return(XML_CHAR_ENCODING_ERROR);
}
/** /**
* xmlParseCharEncoding: * xmlParseCharEncoding:
* @name: the encoding name as parsed, in UTF-8 format (ASCII actually) * @name: the encoding name as parsed, in UTF-8 format (ASCII actually)
@@ -527,18 +544,13 @@ xmlCompareEncTableEntries(const void *vkey, const void *ventry) {
xmlCharEncoding xmlCharEncoding
xmlParseCharEncoding(const char *name) xmlParseCharEncoding(const char *name)
{ {
const xmlEncTableEntry *entry; xmlCharEncoding enc = xmlParseCharEncodingInternal(name);
if (name == NULL) /* Backward compatibility */
return(XML_CHAR_ENCODING_NONE); if (enc == XML_CHAR_ENCODING_UTF16)
enc = XML_CHAR_ENCODING_UTF16LE;
entry = bsearch(name, xmlEncTable, return(enc);
sizeof(xmlEncTable) / sizeof(xmlEncTable[0]),
sizeof(xmlEncTable[0]), xmlCompareEncTableEntries);
if (entry != NULL)
return(entry->enc);
return(XML_CHAR_ENCODING_NONE);
} }
/** /**
@@ -975,7 +987,7 @@ xmlCreateCharEncodingHandler(const char *name, int output,
if (nalias != NULL) if (nalias != NULL)
name = nalias; name = nalias;
enc = xmlParseCharEncoding(name); enc = xmlParseCharEncodingInternal(name);
/* Return NULL handler for UTF-8 */ /* Return NULL handler for UTF-8 */
if (enc == XML_CHAR_ENCODING_UTF8) if (enc == XML_CHAR_ENCODING_UTF8)