From: Andreas Ă–man Date: Mon, 14 Jun 2010 18:42:00 +0000 (+0000) Subject: Fix memory corruption issue X-Git-Tag: 2.12~159 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70f10c09da97390346bbcd9e30e8a9d99d480ec1;p=thirdparty%2Ftvheadend.git Fix memory corruption issue --- diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index d15adf99b..11ba7a247 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)