diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/pbx.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/main/pbx.c b/main/pbx.c index a2d27b45f..aa08e96b5 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -6226,11 +6226,12 @@ static int add_pri(struct ast_context *con, struct ast_exten *tmp, el->next = tmp; /* The pattern trie points to this exten; replace the pointer, and all will be well */ - - if (x->exten) { /* this test for safety purposes */ - x->exten = tmp; /* replace what would become a bad pointer */ - } else { - ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n"); + if (x) { /* if the trie isn't formed yet, don't sweat this */ + if (x->exten) { /* this test for safety purposes */ + x->exten = tmp; /* replace what would become a bad pointer */ + } else { + ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n"); + } } } else { /* We're the very first extension. */ struct match_char *x = add_exten_to_pattern_tree(con, e, 1); @@ -6249,10 +6250,12 @@ static int add_pri(struct ast_context *con, struct ast_exten *tmp, con->root = tmp; /* The pattern trie points to this exten; replace the pointer, and all will be well */ - if (x->exten) { /* this test for safety purposes */ - x->exten = tmp; /* replace what would become a bad pointer */ - } else { - ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n"); + if (x) { /* if the trie isn't formed yet; no problem */ + if (x->exten) { /* this test for safety purposes */ + x->exten = tmp; /* replace what would become a bad pointer */ + } else { + ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n"); + } } } if (tmp->priority == PRIORITY_HINT) |