From 70f10c09da97390346bbcd9e30e8a9d99d480ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Mon, 14 Jun 2010 18:42:00 +0000 Subject: [PATCH] Fix memory corruption issue --- src/dvr/dvr_rec.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index d15adf99..11ba7a24 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -448,6 +448,7 @@ dvr_thread(void *aux) streaming_queue_t *sq = &de->de_sq; streaming_message_t *sm; int run = 1; + th_pkt_t *pkt; pthread_mutex_lock(&sq->sq_mutex); @@ -464,9 +465,12 @@ dvr_thread(void *aux) switch(sm->sm_type) { case SMT_PACKET: - if(dispatch_clock > de->de_start - (60 * de->de_start_extra)) - dvr_thread_new_pkt(de, sm->sm_data); - pkt_ref_dec(sm->sm_data); + pkt = sm->sm_data; + if(dispatch_clock > de->de_start - (60 * de->de_start_extra)) { + pkt = pkt_merge_global(pkt); + dvr_thread_new_pkt(de, pkt); + } + pkt_ref_dec(pkt); break; case SMT_START: @@ -594,8 +598,6 @@ dvr_thread_new_pkt(dvr_entry_t *de, th_pkt_t *pkt) char txt[100]; int64_t pts, dts; - pkt = pkt_merge_global(pkt); - buf = pkt->pkt_payload; bufsize = pkt->pkt_payloadlen; LIST_FOREACH(drs, &de->de_streams, drs_link)