From: jstebbins Date: Fri, 29 Oct 2010 16:17:48 +0000 (+0000) Subject: fix a segfault and a deadlock if reader exits befor first buffer sent X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=46eba7a6f968c5475ec78d5a962e0670525c3762;p=handbrake-jp%2Fhandbrake-jp-git.git fix a segfault and a deadlock if reader exits befor first buffer sent This can happen if enough of the source is good that it scans but the beginning has an error that causes reader to exit. git-svn-id: svn://localhost/HandBrake/trunk@3628 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c index cff6e43b..e461f634 100644 --- a/libhb/decavcodec.c +++ b/libhb/decavcodec.c @@ -1014,7 +1014,10 @@ static int decavcodecvWork( hb_work_object_t * w, hb_buffer_t ** buf_in, /* if we got an empty buffer signaling end-of-stream send it downstream */ if ( in->size == 0 ) { - decodeVideo( pv, in->data, in->size, in->sequence, pts, dts ); + if ( pv->context->codec != NULL ) + { + decodeVideo( pv, in->data, in->size, in->sequence, pts, dts ); + } hb_list_add( pv->list, in ); *buf_out = link_buf_list( pv ); return HB_WORK_DONE; diff --git a/libhb/sync.c b/libhb/sync.c index acc782e4..57809d7e 100644 --- a/libhb/sync.c +++ b/libhb/sync.c @@ -327,7 +327,7 @@ int syncVideoWork( hb_work_object_t * w, hb_buffer_t ** buf_in, } /* Wait till we can determine the initial pts of all streams */ - if( pv->common->pts_offset == INT64_MIN ) + if( next->size != 0 && pv->common->pts_offset == INT64_MIN ) { pv->common->first_pts[0] = next->start; hb_lock( pv->common->mutex );