diff options
| author | Kathy Gray | 2015-05-16 18:08:30 +0100 |
|---|---|---|
| committer | Kathy Gray | 2015-05-16 18:08:30 +0100 |
| commit | 8eff090dca4928fd575a4b0f8df6915fe503da7d (patch) | |
| tree | 5e3286168d2c8b5e3147e61c03dfd05b1774cc72 /src/lem_interp/interp.lem | |
| parent | 54fb1a903c896b76e9572c6e11057ac044b9a27c (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.lem | 6 |
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) |
