tree data OPTIMIZE added first_sibling parameter
This change avoids unnecessary finding of the first sibling in case
the parent node is not available.
diff --git a/src/tree_data_common.c b/src/tree_data_common.c
index e1973cc..eb14433 100644
--- a/src/tree_data_common.c
+++ b/src/tree_data_common.c
@@ -773,9 +773,13 @@
/* get the first sibling */
if (node->parent) {
- start = node->parent->child;
- } else {
- for (start = (struct lyd_node *)node; start->prev->next; start = start->prev) {}
+ return node->parent->child;
+ } else if (!node->prev->next) {
+ return (struct lyd_node *)node;
+ }
+
+ for (start = (struct lyd_node *)node->prev; start->prev->next; start = start->prev) {
+ assert(start != node);
}
return start;