summaryrefslogtreecommitdiffstats
path: root/byterun/finalise.c
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2008-07-28 12:03:55 +0000
committerDamien Doligez <damien.doligez-inria.fr>2008-07-28 12:03:55 +0000
commitdf023f535b9b4bb051cbce6dc39ea3b835bb80f1 (patch)
tree9cb3f00be19a0a1c8b5d64e382a7e4666b777bad /byterun/finalise.c
parentc4d8f39fc28a6ef6909e07bb6f7bf76069f8f96e (diff)
lazy: do not short-circuit to pointers outside the heap
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@8954 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r--byterun/finalise.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/byterun/finalise.c b/byterun/finalise.c
index c55032d4e..1e176dd17 100644
--- a/byterun/finalise.c
+++ b/byterun/finalise.c
@@ -88,9 +88,9 @@ void caml_final_update (void)
value fv;
Assert (final_table[i].offset == 0);
fv = Forward_val (final_table[i].val);
- if (Is_block (fv) && Is_in_value_area(fv)
- && (Tag_val (fv) == Forward_tag || Tag_val (fv) == Lazy_tag
- || Tag_val (fv) == Double_tag)){
+ if (Is_block (fv)
+ && (!Is_in_value_area(fv) || Tag_val (fv) == Forward_tag
+ || Tag_val (fv) == Lazy_tag || Tag_val (fv) == Double_tag)){
/* Do not short-circuit the pointer. */
}else{
final_table[i].val = fv;