summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp.lem
diff options
context:
space:
mode:
authorKathy Gray2015-05-16 18:08:30 +0100
committerKathy Gray2015-05-16 18:08:30 +0100
commit8eff090dca4928fd575a4b0f8df6915fe503da7d (patch)
tree5e3286168d2c8b5e3147e61c03dfd05b1774cc72 /src/lem_interp/interp.lem
parent54fb1a903c896b76e9572c6e11057ac044b9a27c (diff)
Fix bug where undef was blown up to fill the full register on a field assignment
Diffstat (limited to 'src/lem_interp/interp.lem')
-rw-r--r--src/lem_interp/interp.lem6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index b1a23a5e..1177216c 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -2020,7 +2020,8 @@ and create_write_message_or_update mode t_level value l_env l_mem is_top_level (
let start_pos = reg_start_pos regf in
let reg_size = reg_size regf in
let request =
- (Action (Write_reg regf Nothing (update_vector_start default_dir start_pos reg_size value))
+ (Action (Write_reg regf Nothing
+ (if is_top_level then (update_vector_start default_dir start_pos reg_size value) else value))
(Thunk_frame (E_aux (E_lit (L_aux L_unit l)) (l,intern_annot annot)) t_level l_env l_mem Top),
l_mem,l_env) in
if is_top_level then (request,Nothing)
@@ -2186,7 +2187,8 @@ and create_write_message_or_update mode t_level value l_env l_mem is_top_level (
let start_pos = reg_start_pos regf in
let reg_size = reg_size regf in
let request =
- (Action (Write_reg regf Nothing (update_vector_start default_dir start_pos reg_size value))
+ (Action (Write_reg regf Nothing
+ (if is_top_level then (update_vector_start default_dir start_pos reg_size value) else value))
(Thunk_frame (E_aux (E_lit (L_aux L_unit l)) (l,intern_annot annot)) t_level l_env l_mem Top),
l_mem,l_env) in
if is_top_level then (request,Nothing)