From d5fa55011856f3cac51336ce70e33e68410fca7a Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 12 Sep 2013 21:58:06 -0500 Subject: [PATCH] Make ZCC_TreeNode::AppendSibling() work with lists - Previously, you could only append lone nodes to ZCC_TreeNode lists. Now you can append one list to another. --- src/zscript/zcc_parser.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/zscript/zcc_parser.h b/src/zscript/zcc_parser.h index 3ad675abe..ba046d723 100644 --- a/src/zscript/zcc_parser.h +++ b/src/zscript/zcc_parser.h @@ -211,17 +211,19 @@ struct ZCC_TreeNode return; } - // The new sibling node should only be in a list with itself. - assert(sibling->SiblingNext == sibling && sibling->SiblingPrev == sibling); - // Check integrity of our sibling list. assert(SiblingPrev->SiblingNext == this); assert(SiblingNext->SiblingPrev == this); + // Check integrity of new sibling list. + assert(sibling->SiblingPrev->SiblingNext = sibling); + assert(sibling->SiblingNext->SiblingPrev = sibling); + + ZCC_TreeNode *siblingend = sibling->SiblingPrev; SiblingPrev->SiblingNext = sibling; sibling->SiblingPrev = SiblingPrev; - SiblingPrev = sibling; - sibling->SiblingNext = this; + SiblingPrev = siblingend; + siblingend->SiblingNext = this; } };