mirror of https://gerrit.osmocom.org/libosmocore
fsm: id: properly set name in case of NULL id
Since alloc relies on osmo_fsm_inst_update_id() to set the name, never skip that. In osmo_fsm_inst_alloc(), we allow passing a NULL id, and in osmo_fsm_inst_update_id(), we set the name without id if id is NULL. Change-Id: I6d6b09a811b82770818f19b189a57d9fc4a8133b
This commit is contained in:
parent
975ee6bd44
commit
71f76a1f42
|
@ -263,11 +263,9 @@ struct osmo_fsm_inst *osmo_fsm_inst_alloc(struct osmo_fsm *fsm, void *ctx, void
|
|||
fi->log_level = log_level;
|
||||
osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi);
|
||||
|
||||
if (id) {
|
||||
if (osmo_fsm_inst_update_id(fi, id) < 0) {
|
||||
talloc_free(fi);
|
||||
return NULL;
|
||||
}
|
||||
if (osmo_fsm_inst_update_id(fi, id) < 0) {
|
||||
talloc_free(fi);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
INIT_LLIST_HEAD(&fi->proc.children);
|
||||
|
|
|
@ -221,20 +221,7 @@ do { \
|
|||
/* allocate FSM instance without id, there should be a name without id */
|
||||
fi = osmo_fsm_inst_alloc(&fsm, g_ctx, NULL, LOGL_DEBUG, NULL);
|
||||
OSMO_ASSERT(fi);
|
||||
/* CURRENT BUG: here I want to just do
|
||||
assert_name("Test_FSM");
|
||||
* but when allocated with a NULL id, the fsm's name remains unset. Hence: */
|
||||
{
|
||||
const char *expected_name = "Test_FSM";
|
||||
const char *name = osmo_fsm_inst_name(fi);
|
||||
fprintf(stderr, " osmo_fsm_inst_name() == %s\n", osmo_quote_str(name, -1));
|
||||
if (safe_strcmp(name, expected_name)) {
|
||||
fprintf(stderr, " ERROR: expected %s\n", osmo_quote_str(expected_name, -1));
|
||||
OSMO_ASSERT(false);
|
||||
}
|
||||
OSMO_ASSERT(osmo_fsm_inst_find_by_name(&fsm, "Test_FSM") == NULL); /* <- ERROR */
|
||||
fprintf(stderr, " osmo_fsm_inst_find_by_name(%s) == NULL\n", osmo_quote_str(expected_name, -1));
|
||||
}
|
||||
|
||||
change_id("my_id");
|
||||
change_id("another_id");
|
||||
|
|
|
@ -13,7 +13,7 @@ Checking FSM allocation
|
|||
--- test_id_api()
|
||||
Test_FSM{NULL}: Allocated
|
||||
[0;m osmo_fsm_inst_name() == "Test_FSM"
|
||||
osmo_fsm_inst_find_by_name("Test_FSM") == NULL
|
||||
osmo_fsm_inst_find_by_name("Test_FSM") == fi
|
||||
osmo_fsm_inst_update_id("my_id")
|
||||
rc == 0, ok
|
||||
osmo_fsm_inst_name() == "Test_FSM(my_id)"
|
||||
|
|
Loading…
Reference in New Issue