Don't dereference consumed frame delivery.
authorMark Spencer <markster@digium.com>
Tue, 20 Apr 2004 15:28:58 +0000 (15:28 +0000)
committerMark Spencer <markster@digium.com>
Tue, 20 Apr 2004 15:28:58 +0000 (15:28 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2719 65c4cc65-6c06-0410-ace0-fbb531ad65f3

translate.c

index 6433fc5..2c69d5c 100755 (executable)
@@ -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;