dont assume valid slice from process memory cache grab

This commit is contained in:
Ryan Fleury
2024-01-27 10:46:41 -08:00
parent 967936cef6
commit 28e258b5dc
2 changed files with 9 additions and 6 deletions
+2 -2
View File
@@ -6203,9 +6203,9 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D
if(box->squish != 0) if(box->squish != 0)
{ {
Vec2F32 box_dim = dim_2f32(box->rect); Vec2F32 box_dim = dim_2f32(box->rect);
Mat3x3F32 box2origin_xform = make_translate_3x3f32(v2f32(-box->rect.x0 - box_dim.x/2, -box->rect.y0)); Mat3x3F32 box2origin_xform = make_translate_3x3f32(v2f32(-box->rect.x0 - box_dim.x/8, -box->rect.y0));
Mat3x3F32 scale_xform = make_scale_3x3f32(v2f32(1-box->squish, 1-box->squish)); Mat3x3F32 scale_xform = make_scale_3x3f32(v2f32(1-box->squish, 1-box->squish));
Mat3x3F32 origin2box_xform = make_translate_3x3f32(v2f32(box->rect.x0 + box_dim.x/2, box->rect.y0)); Mat3x3F32 origin2box_xform = make_translate_3x3f32(v2f32(box->rect.x0 + box_dim.x/8, box->rect.y0));
Mat3x3F32 xform = mul_3x3f32(origin2box_xform, mul_3x3f32(scale_xform, box2origin_xform)); Mat3x3F32 xform = mul_3x3f32(origin2box_xform, mul_3x3f32(scale_xform, box2origin_xform));
d_push_xform2d(xform); d_push_xform2d(xform);
} }
+7 -4
View File
@@ -987,12 +987,15 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW
size = Min(size, 64); size = Min(size, 64);
Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); 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); 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) if(slice.byte_changed_flags != 0)
{ {
if(slice.byte_changed_flags[idx] != 0) for(U64 idx = 0; idx < (size+63)/64; idx += 1)
{ {
row_is_fresh = 1; if(slice.byte_changed_flags[idx] != 0)
break; {
row_is_fresh = 1;
break;
}
} }
} }
}break; }break;