From 17a1b40b20ff584a3c4347546e419001f9bd2a63 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 1 Sep 2013 15:54:25 +0000 Subject: [PATCH] vss: Avoid assertion "i == g->num_header_slices - 1". This fixes a very old bug in the timing code for fec slices. Depending on the number of bytes to submit and on the number of slices of the current fec group it may happen that we reserve more slices than needed for the audio file header. This is not a problem per se, but the above assertion hits in this case and aborts para_server. Fix this by removing the assertion, and make sure that all reserved header slices are properly initialized. --- vss.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vss.c b/vss.c index aec357ab..06707d6c 100644 --- a/vss.c +++ b/vss.c @@ -565,8 +565,14 @@ static int setup_next_fec_group(struct fec_client *fc, struct vss_task *vsst) if (payload_size < g->slice_bytes) memset(fc->extra_header_buf + payload_size, 0, g->slice_bytes - payload_size); - fc->src_data[i] = fc->extra_header_buf; - assert(i == g->num_header_slices - 1); + /* + * There might be more than one header slice to fill although + * only the first one will be used. Set all header slices to + * our extra buffer. + */ + while (i < g->num_header_slices) + fc->src_data[i++] = fc->extra_header_buf; + break; /* we don't want i to be increased. */ } /* -- 2.39.2