diff --git a/apps/app_record.c b/apps/app_record.c
index cc0e41ee93..9e72be79de 100755
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -56,7 +56,7 @@ static int record_exec(struct ast_channel *chan, void *data)
 	struct localuser *u;
 	struct ast_frame *f = NULL;
 	
-	struct ast_dsp *sildet;   	/* silence detector dsp */
+	struct ast_dsp *sildet = NULL;   	/* silence detector dsp */
 	int totalsilence = 0;
 	int dspsilence = 0;
 	int silence = 0;		/* amount of silence to allow */
@@ -222,7 +222,8 @@ static int record_exec(struct ast_channel *chan, void *data)
 	        res = ast_set_read_format(chan, rfmt);
         	if (res)
         	        ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
-		ast_dsp_free(sildet);
+		if (sildet)
+			ast_dsp_free(sildet);
 	}
 	return res;
 }