(fix commit
14c324f8b)
* allchblk.c [USE_MUNMAP] (GC_unmap_old): Replace
(unsigned short)GC_gc_no-hb_last_reclaimed to
(unsigned short)(GC_gc_no-hb_last_reclaimed) to handle
value wrapping in hb_last_reclaimed (and the truncated GC_gc_no)
correctly.
hhdr = HDR(h);
if (!IS_MAPPED(hhdr)) continue;
- if ((unsigned short)GC_gc_no - hhdr -> hb_last_reclaimed >
+ /* Check that the interval is larger than the threshold (the */
+ /* truncated counter value wrapping is handled correctly). */
+ if ((unsigned short)(GC_gc_no - hhdr->hb_last_reclaimed) >
(unsigned short)GC_unmap_threshold) {
GC_unmap((ptr_t)h, hhdr -> hb_sz);
hhdr -> hb_flags |= WAS_UNMAPPED;