From 509089d95d34ef0d562ca04039847b8da4371872 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Sat, 3 Feb 2024 09:20:31 -0800 Subject: [PATCH] remain robust to busted range queries for ctrl process memory cache --- src/ctrl/ctrl_core.c | 6 ++---- src/df/gfx/df_gfx.c | 2 +- src/df/gfx/df_views.c | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 631d6bb7..799c9bdc 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -901,8 +901,6 @@ internal CTRL_ProcessMemorySlice ctrl_query_cached_data_from_process_vaddr_range(Arena *arena, CTRL_MachineID machine_id, CTRL_Handle process, Rng1U64 range) { CTRL_ProcessMemorySlice result = {0}; - result.byte_bad_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); - result.byte_changed_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); if(range.max > range.min && dim_1u64(range) <= MB(256) && range.min <= 0x000FFFFFFFFFFFFFull && @@ -932,8 +930,8 @@ ctrl_query_cached_data_from_process_vaddr_range(Arena *arena, CTRL_MachineID mac //- rjf: setup output buffers void *read_out = push_array(arena, U8, dim_1u64(range)); - U64 *byte_bad_flags = result.byte_bad_flags; - U64 *byte_changed_flags = result.byte_changed_flags; + U64 *byte_bad_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); + U64 *byte_changed_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); //- rjf: iterate pages, fill output { diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index 7d3b1e9e..c6485ea2 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -4157,7 +4157,7 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, vaddr_rng); - for(U64 idx = 0; idx < (size+63)/64; idx += 1) + for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) { diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 3822e611..62eeed15 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -1122,7 +1122,7 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, vaddr_rng); - for(U64 idx = 0; idx < (size+63)/64; idx += 1) + for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) {