diff options
Diffstat (limited to 'main/config.c')
-rw-r--r-- | main/config.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/main/config.c b/main/config.c index 622d6ed76..55c40a955 100644 --- a/main/config.c +++ b/main/config.c @@ -783,24 +783,28 @@ void ast_category_append(struct ast_config *config, struct ast_category *categor config->current = category; } -void ast_category_insert(struct ast_config *config, struct ast_category *cat, const char *match) +int ast_category_insert(struct ast_config *config, struct ast_category *cat, const char *match) { struct ast_category *cur_category; - if (!cat || !match) - return; + if (!config || !cat || !match) { + return -1; + } if (!strcasecmp(config->root->name, match)) { cat->next = config->root; config->root = cat; - return; + return 0; } - for (cur_category = config->root; cur_category; cur_category = cur_category->next) { + for (cur_category = config->root; cur_category && cur_category->next; + cur_category = cur_category->next) { if (!strcasecmp(cur_category->next->name, match)) { cat->next = cur_category->next; cur_category->next = cat; - break; + return 0; } } + + return -1; } static void ast_destroy_template_list(struct ast_category *cat) |