uORB: correct pub creation for multi-topics

This commit is contained in:
Lorenz Meier 2015-01-25 17:01:39 +01:00
parent 7932e2eda2
commit 4f9a6273cb
2 changed files with 13 additions and 10 deletions

View File

@ -599,13 +599,6 @@ ORBDevMaster::ioctl(struct file *filp, int cmd, unsigned long arg)
return ret;
}
/* driver wants a permanent copy of the node name, so make one here */
objname = strdup(meta->o_name);
if (objname == nullptr) {
return -ENOMEM;
}
/* ensure that only one advertiser runs through this critical section */
lock();
@ -622,9 +615,20 @@ ORBDevMaster::ioctl(struct file *filp, int cmd, unsigned long arg)
*(adv->instance) = group_tries;
}
/* driver wants a permanent copy of the node name, so make one here */
objname = strdup(meta->o_name);
if (objname == nullptr) {
return -ENOMEM;
}
/* driver wants a permanent copy of the path, so make one here */
devpath = strdup(nodepath);
if (devpath == nullptr) {
return -ENOMEM;
}
/* construct the new node */
node = new ORBDevNode(meta, objname, devpath, adv->priority);
@ -644,12 +648,11 @@ ORBDevMaster::ioctl(struct file *filp, int cmd, unsigned long arg)
free((void *)devpath);
}
/* try with next larger index */
group_tries++;
} while (ret != OK && (group_tries < max_group_tries));
if (group_tries >= max_group_tries) {
if (group_tries > max_group_tries) {
ret = -ENOMEM;
}

View File

@ -59,7 +59,7 @@ typedef const struct orb_metadata *orb_id_t;
/**
* Maximum number of multi topic instances
*/
#define ORB_MULTI_MAX_INSTANCES 4
#define ORB_MULTI_MAX_INSTANCES 3
/**
* Topic priority.