diff --git a/pbx.c b/pbx.c
index c1254ae6029bf36ac37b33495b38428d0736c464..1238a7cd370ef94d79571723652fdec43f07cf8d 100644
--- a/pbx.c
+++ b/pbx.c
@@ -3422,12 +3422,11 @@ int ast_unregister_application(const char *app)
 struct ast_context *ast_context_create(struct ast_context **extcontexts, const char *name, const char *registrar)
 {
 	struct ast_context *tmp, **local_contexts;
-	int length;
-	length = sizeof(struct ast_context);
-	length += strlen(name) + 1;
+	int length = sizeof(struct ast_context) + strlen(name) + 1;
+
 	if (!extcontexts) {
-		local_contexts = &contexts;
 		ast_mutex_lock(&conlock);
+		local_contexts = &contexts;
 	} else
 		local_contexts = extcontexts;