From 295778f1caca6d4c3f429a78161ecbf308a5cb5b Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 6 Feb 2025 11:17:42 -0800 Subject: [PATCH] eval: prohibit identifier overrides in macro maps; raddbg: correctly mark dirty state & recompute given watch window mutations; do not escape unquoted value eval strings --- src/eval/eval_parse.c | 2 +- src/raddbg/raddbg_core.c | 6 +++++- src/raddbg/raddbg_views.c | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/eval/eval_parse.c b/src/eval/eval_parse.c index 3b32b756..daccd7f7 100644 --- a/src/eval/eval_parse.c +++ b/src/eval/eval_parse.c @@ -152,8 +152,8 @@ e_string2expr_map_insert(Arena *arena, E_String2ExprMap *map, String8 string, E_ SLLQueuePush_N(map->slots[slot_idx].first, map->slots[slot_idx].last, node, hash_next); node->string = push_str8_copy(arena, string); existing_node = node; + existing_node->expr = expr; } - existing_node->expr = expr; } internal void diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 8c0b7a66..35ec78c2 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -8845,7 +8845,11 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul case 2: {string = str8_from_16(arena, str16_cstring((U16 *)string_buffer));}break; case 4: {string = str8_from_32(arena, str32_cstring((U32 *)string_buffer));}break; } - String8 string_escaped = ev_escaped_from_raw_string(arena, string); + String8 string_escaped = string; + if(!no_addr || depth > 0) + { + string_escaped = ev_escaped_from_raw_string(arena, string); + } space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, string_escaped).x; space_taken += 2*fnt_dim_from_tag_size_string(font, font_size, 0, 0, str8_lit("\"")).x; if(!no_addr || depth > 0) diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index 50a1ef2e..a7b03028 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -2198,6 +2198,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, Rng2F32 rect) RD_WatchPt new_pt = {parent_key, key, pt.cell_id}; next_cursor_pt = new_pt; next_cursor_set = 1; + state_dirty = 1; } } }break; @@ -2208,6 +2209,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, Rng2F32 rect) rd_cfg_release(rd_cfg_child_from_string(row_info.group_cfg, str8_lit("view_rule"))); } ev_key_set_view_rule(eval_view, row->key, str8_zero()); + state_dirty = 1; }break; case RD_WatchCellKind_Eval: {