diff --git a/apps/app_playback.c b/apps/app_playback.c
index 87b06b02e5c628fface31e7534f57e5d5d5e4fda..396ed71e6cf34e7425f14c777a8c60ecfe85c453 100644
--- a/apps/app_playback.c
+++ b/apps/app_playback.c
@@ -380,6 +380,7 @@ static struct ast_cli_entry cli_playback[] = {
 static int playback_exec(struct ast_channel *chan, void *data)
 {
 	int res = 0;
+	int mres = 0;
 	struct ast_module_user *u;
 	char *tmp;
 	int option_skip=0;
@@ -422,11 +423,11 @@ static int playback_exec(struct ast_channel *chan, void *data)
 			res = ast_answer(chan);
 	}
 	if (!res) {
-		int mres = 0;
+		char *back = args.filenames;
 		char *front;
 
 		ast_stopstream(chan);
-		while (!res && (front = strsep(&tmp, "&"))) {
+		while (!res && (front = strsep(&back, "&"))) {
 			if (option_say)
 				res = say_full(chan, front, "", chan->language, NULL, -1, -1);
 			else
@@ -442,9 +443,9 @@ static int playback_exec(struct ast_channel *chan, void *data)
 				mres = 1;
 			}
 		}
-		pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", mres ? "FAILED" : "SUCCESS");
 	}
 done:
+	pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", mres ? "FAILED" : "SUCCESS");
 	ast_module_user_remove(u);
 	return res;
 }
diff --git a/main/pbx.c b/main/pbx.c
index 538b5fb9c3ac67489dbf197ad8fbbe6035a27f7b..a800ae8739ce0f169a4ceb25435453a8a906c7fc 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -5292,8 +5292,10 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data)
 		AST_APP_ARG(context);
 	);
 
-	if (ast_strlen_zero(data))
+	if (ast_strlen_zero(data)) {
 		ast_log(LOG_WARNING, "Background requires an argument (filename)\n");
+		return -1;
+	}
 
 	parse = ast_strdupa(data);