]> git.meshlink.io Git - meshlink/commitdiff
Fix meshlink_get_all_nodes().
authorGuus Sliepen <guus@sliepen.org>
Wed, 30 Jul 2014 15:22:39 +0000 (17:22 +0200)
committerGuus Sliepen <guus@sliepen.org>
Wed, 30 Jul 2014 15:22:39 +0000 (17:22 +0200)
src/meshlink.c

index e4061f93de6194c73f071c44eb452b81ee14fd45..84bf4e1042c0b6e81618d133a777e2fa634ddf07 100644 (file)
@@ -1023,12 +1023,12 @@ meshlink_node_t *meshlink_get_node(meshlink_handle_t *mesh, const char *name) {
 }
 
 meshlink_node_t **meshlink_get_all_nodes(meshlink_handle_t *mesh, meshlink_node_t **nodes, size_t *nmemb) {
-       if(!mesh || (nmemb && !nodes)) {
+       if(!mesh || !nmemb || (*nmemb && !nodes)) {
                meshlink_errno = MESHLINK_EINVAL;
                return NULL;
        }
 
-       meshlink_node_t **result, **p;
+       meshlink_node_t **result;
 
        //lock mesh->nodes
        pthread_mutex_lock(&(mesh->nodes_mutex));
@@ -1037,6 +1037,7 @@ meshlink_node_t **meshlink_get_all_nodes(meshlink_handle_t *mesh, meshlink_node_
        result = realloc(nodes, *nmemb * sizeof *nodes);
 
        if(result) {
+               meshlink_node_t **p = result;
                for splay_each(node_t, n, mesh->nodes)
                        *p++ = (meshlink_node_t *)n;
        } else {