[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.
This commit is contained in:
Mike McGreevy 2010-10-08 08:58:36 -05:00
parent b879321f24
commit dbcf40c5a4

View File

@ -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 */