From a250fb0c8d52b2d3ba1b2bd984463347e7c12b71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Afflerbach?= Date: Tue, 25 Oct 2016 10:46:16 +0200 Subject: [PATCH] Fix: Unknown elements get empty node names. For example `msup`: ``` x 2 + 1 ``` --- gumbo_libxml.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gumbo_libxml.c b/gumbo_libxml.c index 76a0038..1bdf8a6 100644 --- a/gumbo_libxml.c +++ b/gumbo_libxml.c @@ -42,7 +42,18 @@ static xmlNodePtr convert_node( GumboElement* elem = &node->v.element; // Tag name & namespace. xmlNsPtr namespace = NULL; - result = xmlNewNode(NULL, BAD_CAST gumbo_normalized_tagname(elem->tag)); + + char *elementName = gumbo_normalized_tagname(elem->tag); + if (strlen(elementName) > 0) { + result = xmlNewNode(NULL, BAD_CAST elementName); + } else { + GumboStringPiece gsp = elem->original_tag; + gumbo_tag_from_original_text(&gsp); + xmlChar *unknownTagName = xmlCharStrndup(gsp.data, gsp.length); + result = xmlNewNode(NULL, unknownTagName); + xmlFree(unknownTagName); + } + if (node->parent->type != GUMBO_NODE_DOCUMENT && elem->tag_namespace != node->parent->v.element.tag_namespace) { namespace = xmlNewNs(