From b09c2dc1cd3be6174318bea2d2af20c23df6fa55 Mon Sep 17 00:00:00 2001 From: Tim Woodall Date: Wed, 22 Mar 2006 16:47:12 +0000 Subject: [PATCH] correction of checksum for pending/buffered data This commit was SVN r9367. --- ompi/datatype/datatype_unpack.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ompi/datatype/datatype_unpack.c b/ompi/datatype/datatype_unpack.c index 94a7b4646d..ac6fb1e9a4 100644 --- a/ompi/datatype/datatype_unpack.c +++ b/ompi/datatype/datatype_unpack.c @@ -465,7 +465,10 @@ ompi_generic_simple_unpack_function( ompi_convertor_t* pConvertor, uint32_t missing_length = element_length - pConvertor->pending_length; assert( pElem->elem.common.flags & DT_FLAG_DATA ); - memcpy( pConvertor->pending + pConvertor->pending_length, packed_buffer, missing_length ); +#if defined(CHECKSUM) + pConvertor->checksum -= OPAL_CSUM(pConvertor->pending, pConvertor->pending_length); +#endif + memcpy(pConvertor->pending + pConvertor->pending_length, packed_buffer, missing_length); packed_buffer = pConvertor->pending; DO_DEBUG( opal_output( 0, "unpack pending from the last unpack %d out of %d bytes\n", pConvertor->pending_length, ompi_ddt_basicDatatypes[pElem->elem.common.type]->size ); ); @@ -554,7 +557,7 @@ ompi_generic_simple_unpack_function( ompi_convertor_t* pConvertor, */ assert (type < DT_MAX_PREDEFINED); assert( iov_len_local < ompi_ddt_basicDatatypes[type]->size ); - memcpy( pConvertor->pending, packed_buffer, iov_len_local ); + MEMCPY_CSUM( pConvertor->pending, packed_buffer, iov_len_local, pConvertor ); DO_DEBUG( opal_output( 0, "Saving %d bytes for the next call\n", iov_len_local ); ); pConvertor->pending_length = iov_len_local; iov_len_local = 0;