(a cherry-pick of commits
6a32bb4,
36a6d79 from 'master')
Issue #245 (bdwgc).
The overflow resulted in an infinite loop in GC_install_counts on Win32.
* headers.c (GC_install_counts): If hbp+=BOTTOM_SZ overflow is expected
then break the first loop; add comment.
for (hbp = h; (word)hbp < (word)h + sz; hbp += BOTTOM_SZ) {
if (!get_index((word) hbp)) return(FALSE);
+ if ((word)hbp > (~(word)0) - (word)BOTTOM_SZ * HBLKSIZE)
+ break; /* overflow of hbp+=BOTTOM_SZ is expected */
}
if (!get_index((word)h + sz - 1)) return(FALSE);
for (hbp = h + 1; (word)hbp < (word)h + sz; hbp += 1) {