From d6af5444a67aae000c668c8828b4ed3710394859 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Fri, 3 Jun 2016 11:36:53 -0500 Subject: [PATCH] fix the get_byte_offset code --- ompi/mca/io/ompio/io_ompio_file_open.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/ompi/mca/io/ompio/io_ompio_file_open.c b/ompi/mca/io/ompio/io_ompio_file_open.c index 09c2226bd7b..6c9a0c87710 100644 --- a/ompi/mca/io/ompio/io_ompio_file_open.c +++ b/ompi/mca/io/ompio/io_ompio_file_open.c @@ -769,35 +769,36 @@ mca_io_ompio_file_get_byte_offset (ompi_file_t *fh, { mca_io_ompio_data_t *data; int i, k, index; - size_t position; - size_t total_bytes; size_t temp_offset; data = (mca_io_ompio_data_t *) fh->f_io_selected_data; temp_offset = data->ompio_fh.f_view_extent * (offset*data->ompio_fh.f_etype_size / data->ompio_fh.f_view_size); + - position = 0; - total_bytes = (offset*data->ompio_fh.f_etype_size) % data->ompio_fh.f_view_size; + i = (offset*data->ompio_fh.f_etype_size) % data->ompio_fh.f_view_size; index = 0; - i = total_bytes; k = 0; while (1) { - k += data->ompio_fh.f_decoded_iov[index].iov_len; + k = data->ompio_fh.f_decoded_iov[index].iov_len; if (i >= k) { - i = i - data->ompio_fh.f_decoded_iov[index].iov_len; - position += data->ompio_fh.f_decoded_iov[index].iov_len; - index = index+1; + i -= k; + index++; + if ( 0 == i ) { + k=0; + break; + } } else { + k=i; break; } } *disp = data->ompio_fh.f_disp + temp_offset + - (OMPI_MPI_OFFSET_TYPE)(intptr_t)data->ompio_fh.f_decoded_iov[index].iov_base; + (OMPI_MPI_OFFSET_TYPE)(intptr_t)data->ompio_fh.f_decoded_iov[index].iov_base + k; return OMPI_SUCCESS; }