From b0e38fbcbf4f564386119642229f181142908a73 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Sun, 9 Sep 2007 07:16:52 +0000 Subject: [PATCH] Fix mxmlWalkNext() and mxmlWalkPrev() when node == top (STR #53) --- CHANGES | 9 ++++++++- doc/makedocs.sh | 2 +- mxml-search.c | 6 ++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 9b8452f..9a456a3 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,13 @@ -CHANGES - 2007-04-22 +CHANGES - 2007-09-09 -------------------- +CHANGES IN Mini-XML 2.3.1 + + - mxmlWalkNext() and mxmlWalkPrev() did not work correctly + when called with a node with no children as the top node + (STR #53) + + CHANGES IN Mini-XML 2.3 - Added two exceptions to the LGPL to support static diff --git a/doc/makedocs.sh b/doc/makedocs.sh index b6e1a7a..ad8c9c7 100755 --- a/doc/makedocs.sh +++ b/doc/makedocs.sh @@ -23,7 +23,7 @@ htmldoc --verbose --batch mxml.book --no-title -f mxml.html rm -rf mxml.d mkdir mxml.d -htmldoc --verbose --batch mxml.book --no-title -t htmlsep -d mxml.d +htmldoc --verbose --batch mxml.book --no-title -t html -d mxml.d # # End of "$Id$". diff --git a/mxml-search.c b/mxml-search.c index 41f5cec..219590e 100644 --- a/mxml-search.c +++ b/mxml-search.c @@ -4,7 +4,7 @@ * Search/navigation functions for Mini-XML, a small XML-like file * parsing library. * - * Copyright 2003-2005 by Michael Sweet. + * Copyright 2003-2007 by Michael Sweet. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -135,6 +135,8 @@ mxmlWalkNext(mxml_node_t *node, /* I - Current node */ return (NULL); else if (node->child && descend) return (node->child); + else if (node == top) + return (NULL); else if (node->next) return (node->next); else if (node->parent && node->parent != top) @@ -167,7 +169,7 @@ mxmlWalkPrev(mxml_node_t *node, /* I - Current node */ mxml_node_t *top, /* I - Top node */ int descend) /* I - Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST */ { - if (!node) + if (!node || node == top) return (NULL); else if (node->prev) {