aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/file.c1
-rw-r--r--main/translate.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/main/file.c b/main/file.c
index daffb766d..6b37f1602 100644
--- a/main/file.c
+++ b/main/file.c
@@ -188,6 +188,7 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f)
trf = ast_translate(fs->trans, f, 0);
if (trf) {
res = fs->fmt->write(fs, trf);
+ ast_frfree(trf);
if (res)
ast_log(LOG_WARNING, "Translated frame write failed\n");
} else
diff --git a/main/translate.c b/main/translate.c
index 1af88ecfb..6de444ff5 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -347,6 +347,8 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
delivery = f->delivery;
for ( ; out && p ; p = p->next) {
framein(p, out);
+ if (out != f)
+ ast_frfree(out);
out = p->t->frameout(p);
}
if (consume)