diff --git a/main/channel.c b/main/channel.c
index 9ba5fb60067e2141aac3c749a22cd4fa9a9768ca..32d559d0f71acf2b1a197ccc026ba2dd2cc6e97d 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -4701,6 +4701,9 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
 							AST_LIST_NEXT(cur, frame_list) = NULL;
 							ast_frfree(cur);
 						}
+						if (new_frame != dup) {
+							ast_frfree(new_frame);
+						}
 						cur = dup;
 					}
 				}