[mpich2-commits] r3927 - mpich2/trunk/src/mpid/common/datatype/dataloop
goodell at mcs.anl.gov
goodell at mcs.anl.gov
Tue Mar 3 15:29:01 CST 2009
Author: goodell
Date: 2009-03-03 15:29:01 -0600 (Tue, 03 Mar 2009)
New Revision: 3927
Modified:
mpich2/trunk/src/mpid/common/datatype/dataloop/dataloop_create_struct.c
Log:
Fix for zero-length hvector members (ticket #430).
The patch was originally written by Rob Ross.
No reviewer.
Modified: mpich2/trunk/src/mpid/common/datatype/dataloop/dataloop_create_struct.c
===================================================================
--- mpich2/trunk/src/mpid/common/datatype/dataloop/dataloop_create_struct.c 2009-03-03 21:28:58 UTC (rev 3926)
+++ mpich2/trunk/src/mpid/common/datatype/dataloop/dataloop_create_struct.c 2009-03-03 21:29:01 UTC (rev 3927)
@@ -570,24 +570,29 @@
{
nr_blks++;
}
- else /* derived type; get a count of contig blocks */
- {
- DLOOP_Count tmp_nr_blks;
+ else /* derived type; get a count of contig blocks */
+ {
+ DLOOP_Count tmp_nr_blks, sz;
- PREPEND_PREFIX(Segment_init)(NULL,
- (DLOOP_Count) blklens[i],
- oldtypes[i],
- segp,
- flag);
- bytes = SEGMENT_IGNORE_LAST;
+ DLOOP_Handle_get_size_macro(oldtypes[i], sz);
- PREPEND_PREFIX(Segment_count_contig_blocks)(segp,
- 0,
- &bytes,
- &tmp_nr_blks);
+ /* if the derived type has some data to contribute, add to flattened representation */
+ if ((blklens[i] > 0) && (sz > 0)) {
+ PREPEND_PREFIX(Segment_init)(NULL,
+ (DLOOP_Count) blklens[i],
+ oldtypes[i],
+ segp,
+ flag);
+ bytes = SEGMENT_IGNORE_LAST;
- nr_blks += tmp_nr_blks;
- }
+ PREPEND_PREFIX(Segment_count_contig_blocks)(segp,
+ 0,
+ &bytes,
+ &tmp_nr_blks);
+
+ nr_blks += tmp_nr_blks;
+ }
+ }
}
nr_blks += 2; /* safety measure */
More information about the mpich2-commits
mailing list