From: Ivan Maidanski Date: Fri, 10 Feb 2012 04:26:40 +0000 (+0400) Subject: Fix GC_root_size update in GC_add_roots_inner (Win32) X-Git-Tag: gc7_2~67 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8440e37357a0e575af3d5a5a2ae144434da89c56;p=gc Fix GC_root_size update in GC_add_roots_inner (Win32) * mark_rts.c (GC_add_roots_inner): Fix update of GC_root_size value for Win32 (adjust GC_root_size before altering r_start/r_end). --- diff --git a/mark_rts.c b/mark_rts.c index 5eb4d140..e48f6608 100644 --- a/mark_rts.c +++ b/mark_rts.c @@ -177,12 +177,12 @@ void GC_add_roots_inner(ptr_t b, ptr_t e, GC_bool tmp) old = GC_static_roots + i; if (b <= old -> r_end && e >= old -> r_start) { if (b < old -> r_start) { + GC_root_size += old->r_start - b; old -> r_start = b; - GC_root_size += (old -> r_start - b); } if (e > old -> r_end) { + GC_root_size += e - old->r_end; old -> r_end = e; - GC_root_size += (e - old -> r_end); } old -> r_tmp &= tmp; break; @@ -198,12 +198,12 @@ void GC_add_roots_inner(ptr_t b, ptr_t e, GC_bool tmp) e = other -> r_end; if (b <= old -> r_end && e >= old -> r_start) { if (b < old -> r_start) { + GC_root_size += old->r_start - b; old -> r_start = b; - GC_root_size += (old -> r_start - b); } if (e > old -> r_end) { + GC_root_size += e - old->r_end; old -> r_end = e; - GC_root_size += (e - old -> r_end); } old -> r_tmp &= other -> r_tmp; /* Delete this entry. */