X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=vss.c;h=4b1bfc78986321d1df9335517dd00a87cda0dd87;hb=a16741dcf32b9ed20ca572d6353c3f1b9212a464;hp=737b77ac29e546fcdbf808dbd884e5dcf5b291e5;hpb=f1164756a9ce8f61b12060a48b84977f24d9e2b3;p=paraslash.git diff --git a/vss.c b/vss.c index 737b77ac..4b1bfc78 100644 --- a/vss.c +++ b/vss.c @@ -416,7 +416,8 @@ static int compute_group_size(struct vss_task *vsst, struct fec_group *g, g->bytes += len; g->num_chunks++; } - assert(g->num_chunks); + if (g->num_chunks == 0) + return -E_EOF; PARA_DEBUG_LOG("group #%u: %u chunks, %u bytes total\n", g->num, g->num_chunks, g->bytes); return 1; @@ -689,9 +690,11 @@ void vss_del_fec_client(struct fec_client *fc) list_del(&fc->node); free(fc->enc_buf); - for (i = 0; i < fc_num_data_slices(fc); i++) - free(fc->src_data[i]); - free(fc->src_data); + if (fc->src_data) { + for (i = 0; i < fc_num_data_slices(fc); i++) + free(fc->src_data[i]); + free(fc->src_data); + } fec_free(fc->parms); free(fc); } @@ -998,6 +1001,7 @@ static void recv_afs_result(struct vss_task *vsst, fd_set *rfds) return; err: free(mmd->afd.afhi.chunk_table); + mmd->afd.afhi.chunk_table = NULL; if (passed_fd >= 0) close(passed_fd); PARA_ERROR_LOG("%s\n", para_strerror(-ret));