From 8f86c8409d701a15d01e625bc22b9fa3fb42c471 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Tue, 20 Apr 2004 15:28:58 +0000
Subject: [PATCH] Don't dereference consumed frame delivery.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 translate.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/translate.c b/translate.c
index 6433fc5376..2c69d5cc80 100755
--- a/translate.c
+++ b/translate.c
@@ -137,6 +137,7 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
 {
 	struct ast_trans_pvt *p;
 	struct ast_frame *out;
+	struct timeval delivery;
 	p = path;
 	/* Feed the first frame into the first translator */
 	p->step->framein(p->state, f);
@@ -179,6 +180,8 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
 			path->nextin.tv_sec++;
 		}
 	}
+	delivery.tv_sec = f->delivery.tv_sec;
+	delivery.tv_usec = f->delivery.tv_usec;
 	if (consume)
 		ast_frfree(f);
 	while(p) {
@@ -191,7 +194,7 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
 		if (p->next) 
 			p->next->step->framein(p->next->state, out);
 		else {
-			if (f->delivery.tv_sec || f->delivery.tv_usec) {
+			if (delivery.tv_sec || delivery.tv_usec) {
 				/* Use next predicted outgoing timestamp */
 				out->delivery.tv_sec = path->nextout.tv_sec;
 				out->delivery.tv_usec = path->nextout.tv_usec;
-- 
GitLab