aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-31 16:30:25 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-04-09 17:57:15 +0200
commit71f76a1f42958ca6dca26669daf41a568d694c18 (patch)
treebd7a5532a46f55b690172b64d8136693a94caa52
parent975ee6bd44ca18c82ecf5aea91c361baf248a0ff (diff)
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
-rw-r--r--src/fsm.c8
-rw-r--r--tests/fsm/fsm_test.c13
-rw-r--r--tests/fsm/fsm_test.err2
3 files changed, 4 insertions, 19 deletions
diff --git a/src/fsm.c b/src/fsm.c
index 88de0116..9bbf870e 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -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);
diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c
index 0f29a2e4..859b78dc 100644
--- a/tests/fsm/fsm_test.c
+++ b/tests/fsm/fsm_test.c
@@ -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");
diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err
index bc159bda..c4ee46f9 100644
--- a/tests/fsm/fsm_test.err
+++ b/tests/fsm/fsm_test.err
@@ -13,7 +13,7 @@ Checking FSM allocation
--- test_id_api()
Test_FSM{NULL}: Allocated
 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)"