Fixed inadvertent recursion in SelectNodes. Updated/add tests for this behavior

This commit is contained in:
Shaun Duncan 2013-10-25 16:44:32 -04:00
parent d5a758279d
commit ecf8264ac7
2 changed files with 33 additions and 12 deletions

14
node.go
View file

@ -383,15 +383,13 @@ func (this *Node) SelectNodesRecursive(namespace, name string) []*Node {
}
func rec_SelectNodes(cn *Node, namespace, name string, list *[]*Node, recurse bool) {
if (namespace == "*" || cn.Name.Space == namespace) && (name == "*" || cn.Name.Local == name) {
*list = append(*list, cn)
if !recurse {
return
}
}
for _, v := range cn.Children {
rec_SelectNodes(v, namespace, name, list, recurse)
if (namespace == "*" || v.Name.Space == namespace) && (name == "*" || v.Name.Local == name) {
*list = append(*list, v)
}
if recurse {
rec_SelectNodes(v, namespace, name, list, recurse)
}
}
}