diff --git a/src/istack.c b/src/istack.c index 22942ba..afa6c73 100644 --- a/src/istack.c +++ b/src/istack.c @@ -41,6 +41,12 @@ static Bool IsNodePushable( Node *node ) if (node->tag->model & CM_OBJECT) return no; + /*\ Issue #92: OLD problem of ins and del which are marked as both + * inline and block, thus should NOT ever be 'inserted' + \*/ + if (nodeIsINS(node) || nodeIsDEL(node)) + return no; + return yes; } diff --git a/src/lexer.c b/src/lexer.c index c6ff87f..d45b93f 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -2138,6 +2138,9 @@ Node* TY_(GetToken)( TidyDocImpl* doc, GetTokenMode mode ) /* at start of block elements, unclosed inline elements are inserted into the token stream */ if (lexer->insert || lexer->inode) { + /*\ Issue #92: could fix by the following, but instead chose not to stack these 2 + * if ( !(lexer->insert && (nodeIsINS(lexer->insert) || nodeIsDEL(lexer->insert))) ) { + \*/ lexer->token = TY_(InsertedToken)( doc ); node = lexer->token; GTDBG(doc,"lex-inserted2", node); diff --git a/src/tags.h b/src/tags.h index 467c8b9..67f0174 100644 --- a/src/tags.h +++ b/src/tags.h @@ -228,6 +228,9 @@ uint TY_(nodeHeaderLevel)( Node* node ); /* 1, 2, ..., 6 */ #define nodeIsCANVAS( node ) TagIsId( node, TidyTag_CANVAS ) #define nodeIsPROGRESS( node ) TagIsId( node, TidyTag_PROGRESS ) +#define nodeIsINS( node ) TagIsId( node, TidyTag_INS ) +#define nodeIsDEL( node ) TagIsId( node, TidyTag_DEL ) + /* HTML5 */ #define nodeIsDATALIST( node ) TagIsId( node, TidyTag_DATALIST ) /* NOT in HTML 5 */