diff --git a/main/pbx.c b/main/pbx.c
index fa2f645947eafd010190e881665f4d531bcf17b9..09f3d95ec7157553c6be9f3d3ccdecb69016e2ee 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -4479,11 +4479,12 @@ void pbx_substitute_variables_helper_full(struct ast_channel *c, struct varshead
 
 			/* Substitute if necessary */
 			if (needsub) {
-				size_t used;
-				if (!ltmp)
-					ltmp = ast_alloca(VAR_BUF_SIZE);
+				size_t my_used;
 
-				pbx_substitute_variables_helper_full(c, headp, var, ltmp, VAR_BUF_SIZE - 1, &used);
+				if (!ltmp) {
+					ltmp = ast_alloca(VAR_BUF_SIZE);
+				}
+				pbx_substitute_variables_helper_full(c, headp, var, ltmp, VAR_BUF_SIZE - 1, &my_used);
 				vars = ltmp;
 			} else {
 				vars = var;
@@ -4568,11 +4569,12 @@ void pbx_substitute_variables_helper_full(struct ast_channel *c, struct varshead
 
 			/* Substitute if necessary */
 			if (needsub) {
-				size_t used;
-				if (!ltmp)
-					ltmp = ast_alloca(VAR_BUF_SIZE);
+				size_t my_used;
 
-				pbx_substitute_variables_helper_full(c, headp, var, ltmp, VAR_BUF_SIZE - 1, &used);
+				if (!ltmp) {
+					ltmp = ast_alloca(VAR_BUF_SIZE);
+				}
+				pbx_substitute_variables_helper_full(c, headp, var, ltmp, VAR_BUF_SIZE - 1, &my_used);
 				vars = ltmp;
 			} else {
 				vars = var;