summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike McGreevy <mamcgree@hdfgroup.org>2010-10-08 13:58:36 (GMT)
committerMike McGreevy <mamcgree@hdfgroup.org>2010-10-08 13:58:36 (GMT)
commitdbcf40c5a487d617f0920f525bc5953675fd2e48 (patch)
treebb3c07555933f34d573dc7459ed00f820b060fb2 /src
parentb879321f2491cc548f11d7d298f6a6f1b3ed27d6 (diff)
downloadhdf5-dbcf40c5a487d617f0920f525bc5953675fd2e48.zip
hdf5-dbcf40c5a487d617f0920f525bc5953675fd2e48.tar.gz
hdf5-dbcf40c5a487d617f0920f525bc5953675fd2e48.tar.bz2
[svn-r19544] Purpose:
Patch for metadata accumulator bug Description: Linew failed one of the randomly seeded fheap tests due to a corner case bug in the metadata accumulator code. This patch fixes the corner case. Tested: used same random seed in fheap tests to reproduce and verify on linew; plus full make check on jam. unit tests for accumulator code coming soon.
Diffstat (limited to 'src')
-rw-r--r--src/H5Faccum.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/H5Faccum.c b/src/H5Faccum.c
index 2fc53ea..600c3f3 100644
--- a/src/H5Faccum.c
+++ b/src/H5Faccum.c
@@ -312,12 +312,6 @@ H5F_accum_adjust(H5F_meta_accum_t *accum, H5FD_t *lf, hid_t dxpl_id,
accum->dirty = FALSE;
} /* end if */
- /* Move remnant of accumulator down */
- HDmemmove(accum->buf, (accum->buf + shrink_size), remnant_size);
-
- /* Adjust accumulator's location */
- accum->loc += shrink_size;
-
/* Adjust dirty region tracking info */
accum->dirty_off -= shrink_size;
} /* end else */
@@ -325,6 +319,15 @@ H5F_accum_adjust(H5F_meta_accum_t *accum, H5FD_t *lf, hid_t dxpl_id,
/* Trim the accumulator's use of its buffer */
accum->size = remnant_size;
+
+ /* When appending, need to adjust location of accumulator */
+ if(H5F_ACCUM_APPEND == adjust) {
+ /* Move remnant of accumulator down */
+ HDmemmove(accum->buf, (accum->buf + shrink_size), remnant_size);
+
+ /* Adjust accumulator's location */
+ accum->loc += shrink_size;
+ } /* end if */
} /* end if */
/* Check for accumulator needing to be reallocated */