From acdf63b999add1ddea4670ddfcdbfdfa9eeb4eab Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 27 Apr 2024 19:46:37 +0200 Subject: [PATCH] Get rid of error gotos in HTML5 parse conversion --- ext/dom/html5_parser.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ext/dom/html5_parser.c b/ext/dom/html5_parser.c index 97358615507..794050a33ed 100644 --- a/ext/dom/html5_parser.c +++ b/ext/dom/html5_parser.c @@ -132,7 +132,7 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( xmlNodePtr lxml_element = xmlNewDocNode(lxml_doc, NULL, name, NULL); if (UNEXPECTED(lxml_element == NULL)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } xmlAddChild(lxml_parent, lxml_element); lxml_element->line = sanitize_line_nr(node->line); @@ -175,13 +175,13 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( if (UNEXPECTED(local_name_length >= INT_MAX || value_length >= INT_MAX)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OVERFLOW; - goto out; + break; } xmlAttrPtr lxml_attr = xmlMalloc(sizeof(xmlAttr)); if (UNEXPECTED(lxml_attr == NULL)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } memset(lxml_attr, 0, sizeof(xmlAttr)); @@ -193,7 +193,7 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( if (UNEXPECTED(lxml_text == NULL)) { xmlFreeProp(lxml_attr); retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } lxml_attr->children = lxml_attr->last = lxml_text; @@ -238,12 +238,12 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( size_t data_length = text->char_data.data.length; if (UNEXPECTED(data_length >= INT_MAX)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OVERFLOW; - goto out; + break; } xmlNodePtr lxml_text = lexbor_libxml2_bridge_new_text_node_fast(lxml_doc, data, data_length, compact_text_nodes); if (UNEXPECTED(lxml_text == NULL)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } xmlAddChild(lxml_parent, lxml_text); if (node->line >= USHRT_MAX) { @@ -266,7 +266,7 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( ); if (UNEXPECTED(lxml_dtd == NULL)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } /* libxml2 doesn't support line numbers on this anyway, it returns -1 instead, so don't bother */ } else if (node->type == LXB_DOM_NODE_TYPE_COMMENT) { @@ -274,14 +274,13 @@ static lexbor_libxml2_bridge_status lexbor_libxml2_bridge_convert( xmlNodePtr lxml_comment = xmlNewDocComment(lxml_doc, comment->char_data.data.data); if (UNEXPECTED(lxml_comment == NULL)) { retval = LEXBOR_LIBXML2_BRIDGE_STATUS_OOM; - goto out; + break; } xmlAddChild(lxml_parent, lxml_comment); lxml_comment->line = sanitize_line_nr(node->line); } } -out: lexbor_array_obj_destroy(&work_list, false); return retval; }