summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--gc.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c39081c9..bc0fc835 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-11-25 Kaz Kylheku <kkylheku@gmail.com>
+ * gc.c (mark_mem_region): Bugfix: do not mess with the valgrind
+ accessibility of the heap object if valgrind debugging is not enabled.
+
+2009-11-25 Kaz Kylheku <kkylheku@gmail.com>
+
* parser.y (grammar): Fixes for bison 2.4.1. Remove superfluous action
in chrlit. Include <stdlib.h> for abort.
diff --git a/gc.c b/gc.c
index 2ba3231f..07bcea6e 100644
--- a/gc.c
+++ b/gc.c
@@ -301,14 +301,16 @@ static void mark_mem_region(val *low, val *high)
#endif
if (in_heap(maybe_obj)) {
#ifdef HAVE_VALGRIND
- VALGRIND_MAKE_MEM_DEFINED(maybe_obj, sizeof *maybe_obj);
+ if (opt_vg_debug)
+ VALGRIND_MAKE_MEM_DEFINED(maybe_obj, sizeof *maybe_obj);
#endif
type_t t = maybe_obj->t.type;
if ((t & FREE) == 0) {
mark_obj(maybe_obj);
} else {
#ifdef HAVE_VALGRIND
- VALGRIND_MAKE_MEM_NOACCESS(maybe_obj, sizeof *maybe_obj);
+ if (opt_vg_debug)
+ VALGRIND_MAKE_MEM_NOACCESS(maybe_obj, sizeof *maybe_obj);
#endif
}
}