diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2012-02-10 08:26:40 +0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2012-02-10 10:57:10 +0400 |
commit | 28cc8d1ff7410e46cde2a7c5d833df3d2b6f3a80 (patch) | |
tree | 1d7d1b74a8c440f28b82cead80810ba8419a81af /mark_rts.c | |
parent | 4d972fa5f3f9d2e3e093285df4285c592d88e3fa (diff) | |
download | bdwgc-28cc8d1ff7410e46cde2a7c5d833df3d2b6f3a80.tar.gz |
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).
Diffstat (limited to 'mark_rts.c')
-rw-r--r-- | mark_rts.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -189,12 +189,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; @@ -210,12 +210,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. */ |