From 39d5c8c281b2f7e15f2622c577d7e9a023bcc894 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Thu, 14 Jan 2016 18:29:56 -0600 Subject: [PATCH] further bug fixes silencing a compiler warning and fixing a memory overrun --- .../fcoll_dynamic_gen2_file_write_all.c | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_write_all.c b/ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_write_all.c index 8f6e244aef..f3fe7fb4d8 100644 --- a/ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_write_all.c +++ b/ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_write_all.c @@ -555,7 +555,7 @@ static int subroutine ( int index, int cycles, int aggregator, int rank, mca_io_ int *sorted_file_offsets=NULL; int temp_index=0; MPI_Aint *memory_displacements=NULL; - mca_io_ompio_io_array_t *io_array; + mca_io_ompio_io_array_t *io_array=NULL; int num_of_io_entries; int *temp_disp_index=NULL; MPI_Aint global_count = 0; @@ -1155,7 +1155,7 @@ int mca_fcoll_dynamic_gen2_break_file_view ( struct iovec *mem_iov, int mem_coun i=j=0; if ( 0 < mem_count ) { - memoffset = (off_t) mem_iov[j].iov_base; + memoffset = (off_t ) mem_iov[j].iov_base; memlen = mem_iov[j].iov_len; } while ( i < file_count) { @@ -1201,8 +1201,12 @@ int mca_fcoll_dynamic_gen2_break_file_view ( struct iovec *mem_iov, int mem_coun if ( 0 == memlen ) { j++; - memoffset = (off_t ) mem_iov[j].iov_base; - memlen = mem_iov[j].iov_len; + if ( j < mem_count ) { + memoffset = (off_t) mem_iov[j].iov_base; + memlen = mem_iov[j].iov_len; + } + else + break; } } else { @@ -1211,8 +1215,12 @@ int mca_fcoll_dynamic_gen2_break_file_view ( struct iovec *mem_iov, int mem_coun blocklen -= memlen; j++; - memoffset = (off_t ) mem_iov[j].iov_base; - memlen = mem_iov[j].iov_len; + if ( j < mem_count ) { + memoffset = (off_t) mem_iov[j].iov_base; + memlen = mem_iov[j].iov_len; + } + else + break; } #if DEBUG_ON printf("%d: owner=%d b_mem_iovs[%d].base=%ld .len=%d\n", rank, owner,