diff --git a/src/dom/sgml/scanner.c b/src/dom/sgml/scanner.c index 13a517ee..656fad20 100644 --- a/src/dom/sgml/scanner.c +++ b/src/dom/sgml/scanner.c @@ -449,13 +449,13 @@ scan_sgml_element_token(struct dom_scanner *scanner, struct dom_scanner_token *t if (scanner->state == SGML_STATE_ELEMENT) { /* Already inside an element so insert a tag end token * and continue scanning in next iteration. */ - string--; - real_length = 0; type = SGML_TOKEN_TAG_END; scanner_state = SGML_STATE_TEXT; /* We are creating a 'virtual' that has no source. */ possibly_incomplete = 0; + string = token->string.string; + real_length = 0; } else if (is_sgml_ident(*string)) { token->string.string = string; diff --git a/src/dom/test/test-sgml-parser-basic b/src/dom/test/test-sgml-parser-basic index 1a22b7fe..f19f158e 100755 --- a/src/dom/test/test-sgml-parser-basic +++ b/src/dom/test/test-sgml-parser-basic @@ -56,7 +56,7 @@ element: root #text: a' test_output_equals \ -'Parse tag soup elements.' \ +'Parse tag soup elements. (I)' \ 'a' \ ' element: parent @@ -65,6 +65,14 @@ element: parent element: child:2 #text: a' +test_output_equals \ +'Parse tag soup elements. (II)' \ +'< a >< b < c / >< / >' \ +' +element: a + element: b + element: c' + test_output_equals \ 'Parse an enclosed comment.' \ '' \