From: Andre Noll Date: Sat, 2 May 2009 09:50:17 +0000 (+0200) Subject: Merge branch 'master' into next X-Git-Tag: v0.3.5~61^2~2 X-Git-Url: http://git.tuebingen.mpg.de/?a=commitdiff_plain;h=345e7b4adce741621a412c3845712e8540b572ad;hp=0855a5fcdbebabacebee968939cf00bf3161cfaf;p=paraslash.git Merge branch 'master' into next --- diff --git a/alsa_write.c b/alsa_write.c index dd91cd84..b6a087a3 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -45,8 +45,8 @@ struct private_alsa_write_data { */ unsigned samplerate; /** - * the number of channels, also given by command line option or the - * decoder of the writer node group + * The number of channels, given by command line option or the + * decoder of the writer node group. */ unsigned channels; }; @@ -211,9 +211,12 @@ static void alsa_close(struct writer_node *wn) { struct private_alsa_write_data *pad = wn->private_data; PARA_INFO_LOG("closing writer node %p\n", wn); - snd_pcm_drain(pad->handle); - snd_pcm_close(pad->handle); - snd_config_update_free_global(); + + if (pad->handle) { + snd_pcm_drain(pad->handle); + snd_pcm_close(pad->handle); + snd_config_update_free_global(); + } free(pad); } diff --git a/fecdec_filter.c b/fecdec_filter.c index bc530062..5f37f1a8 100644 --- a/fecdec_filter.c +++ b/fecdec_filter.c @@ -117,10 +117,15 @@ static int find_group(struct fec_header *h, FOR_EACH_FECDEC_GROUP(fg, pfd) { if (fg->h.group_num != h->group_num) continue; + if (fg->num_received_slices == 0) + goto success; if (fg->h.slices_per_group != h->slices_per_group) - continue; + return -E_BAD_FEC_HEADER; if (fg->h.data_slices_per_group != h->data_slices_per_group) - continue; + return -E_BAD_FEC_HEADER; + if (fg->h.group_bytes != h->group_bytes) + return -E_BAD_FEC_HEADER; +success: *result = fg; return 1; } @@ -161,8 +166,8 @@ static struct fecdec_group *free_oldest_group(struct private_fecdec_data *pfd) } if (!group_complete(oldest) && !group_empty(oldest)) PARA_WARNING_LOG("Clearing incomplete group %d " - "(contains %d slices)\n", fg->h.group_num, - fg->num_received_slices); + "(contains %d slices)\n", oldest->h.group_num, + oldest->num_received_slices); clear_group(oldest); return oldest; }