diff --git a/main/pbx.c b/main/pbx.c index 1aecee7c9e..322303383c 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -6467,11 +6467,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); @@ -6490,10 +6491,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)