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:
34
encoding.c
34
encoding.c
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user