diff options
| -rw-r--r-- | libcnary/node.c | 7 | ||||
| -rw-r--r-- | libcnary/node_list.c | 4 | 
2 files changed, 7 insertions, 4 deletions
| diff --git a/libcnary/node.c b/libcnary/node.c index 264c78e..0a8f414 100644 --- a/libcnary/node.c +++ b/libcnary/node.c @@ -95,11 +95,12 @@ int node_attach(node_t* parent, node_t* child) {  }  int node_detach(node_t* parent, node_t* child) { -	if (!parent || !child) return 0; -	if (node_list_remove(parent->children, child) == 0) { +	if (!parent || !child) return -1; +	int index = node_list_remove(parent->children, child); +	if (index >= 0) {  		parent->count--;  	} -	return 0; +	return index;  }  int node_insert(node_t* parent, unsigned int index, node_t* child) diff --git a/libcnary/node_list.c b/libcnary/node_list.c index 78f450e..5b291e7 100644 --- a/libcnary/node_list.c +++ b/libcnary/node_list.c @@ -124,6 +124,7 @@ int node_list_remove(node_list_t* list, node_t* node) {  	if (!list || !node) return -1;  	if (list->count == 0) return -1; +	int index = 0;  	node_t* n;  	for (n = list->begin; n; n = n->next) {  		if (node == n) { @@ -144,8 +145,9 @@ int node_list_remove(node_list_t* list, node_t* node) {  				list->begin = newnode;  			}  			list->count--; -			return 0; +			return index;  		} +		index++;  	}	  	return -1;  } | 
