- From: Advocate <wotw@inebraska.com>
- Date: Sun, 1 Aug 1999 13:42:35 -0500
- To: html-tidy@w3.org
Apparently InsertNodeAfterElement is failing to create the
"node->next->prev" link to itself when "node" is inserted after a
node "element" which is not the last node of the "parent". I'll
label that node "(next)".
element
^ ^ |
| | |
| | v
| node
| |
| |
| v
(next)
The "element->next" points to "node" and "node->prev" points to
"element", but "(next)->prev" does not point to "node" but instead it
still points back to "element".
This was only encountered when dealing with PRE tags containing
content illegal for PRE. (Called twice by ParsePre to move illegal
PRE content to be a later sibling of PRE, then open PRE again
afterward). The patch is below.
*** tidy26jul99/parser.c Mon Jul 26 16:03:05 1999
--- tidy26jul99-InsertNodeAfterElement/parser.c Thu Jul 29 12:25:56 1999
***************
*** 43,57 ****
void InsertNodeAfterElement(Node *element, Node *node)
{
Node *parent;
parent = element->parent;
node->parent = parent;
if (parent->last == element)
parent->last = node;
! else
node->next = element->next;
element->next = node;
node->prev = element;
}
--- 43,59 ----
void InsertNodeAfterElement(Node *element, Node *node)
{
Node *parent;
parent = element->parent;
node->parent = parent;
if (parent->last == element)
parent->last = node;
! else {
node->next = element->next;
+ node->next->prev = node;
+ }
element->next = node;
node->prev = element;
}
--
,=<#)-=# <http://www.war-of-the-worlds.org/>
,_--//--_,
_-~_-(####)-_~-_ "Did you see that Parkins boy's body in the tunnels?" "Just
(#>_--'~--~`--_<#) the photos. Worst thing I've ever seen; kid had no face."
Received on Sunday, 1 August 1999 14:48:06 UTC