diff --git a/apps/app_read.c b/apps/app_read.c
index f9193571d74fa0f759d6abdbfbd202deb90074c8..6398281bec509aae2f1e670d7c7f2ad114fa6b6c 100644
--- a/apps/app_read.c
+++ b/apps/app_read.c
@@ -195,6 +195,9 @@ static int read_exec(struct ast_channel *chan, const char *data)
 	if (ast_channel_state(chan) != AST_STATE_UP) {
 		if (ast_test_flag(&flags, OPT_SKIP)) {
 			/* At the user's option, skip if the line is not up */
+			if (ts) {
+				ts = ast_tone_zone_sound_unref(ts);
+			}
 			pbx_builtin_setvar_helper(chan, arglist.variable, "");
 			pbx_builtin_setvar_helper(chan, "READSTATUS", "SKIPPED");
 			return 0;