From dfd40d263606f76cd9e9bc5e2ebba53a949e9968 Mon Sep 17 00:00:00 2001 From: Keguang Zhang Date: Tue, 8 Jan 2019 15:33:24 +0800 Subject: [PATCH] setting: avoid the registration of the same handler Avoid the registration with the same handler by checking handler name. Signed-off-by: Keguang Zhang --- subsys/settings/src/settings.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/subsys/settings/src/settings.c b/subsys/settings/src/settings.c index 063e2e262a9..5df29c7f6c7 100644 --- a/subsys/settings/src/settings.c +++ b/subsys/settings/src/settings.c @@ -18,6 +18,7 @@ sys_slist_t settings_handlers; static u8_t settings_cmd_inited; +static struct settings_handler *settings_handler_lookup(char *name); void settings_store_init(void); void settings_init(void) @@ -32,14 +33,18 @@ void settings_init(void) int settings_register(struct settings_handler *handler) { + if (settings_handler_lookup(handler->name)) { + return -EEXIST; + } sys_slist_prepend(&settings_handlers, &handler->node); + return 0; } /* * Find settings_handler based on name. */ -struct settings_handler *settings_handler_lookup(char *name) +static struct settings_handler *settings_handler_lookup(char *name) { struct settings_handler *ch;