mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 04:48:40 +00:00
fix incorrect type usage in default lookup-range eval path; fixes broken pointer/reference expansions to structs/unions/classes
This commit is contained in:
+4
-4
@@ -472,15 +472,15 @@ E_LOOKUP_RANGE_FUNCTION_DEF(default)
|
|||||||
//- rjf: struct case -> the lookup-range will return a range of members
|
//- rjf: struct case -> the lookup-range will return a range of members
|
||||||
if(do_struct_range)
|
if(do_struct_range)
|
||||||
{
|
{
|
||||||
E_Type *lhs_type = e_type_from_key__cached(lhs_type_key);
|
E_Type *struct_type = e_type_from_key__cached(struct_type_key);
|
||||||
Rng1U64 legal_idx_range = r1u64(0, lhs_type->count);
|
Rng1U64 legal_idx_range = r1u64(0, struct_type->count);
|
||||||
Rng1U64 read_range = intersect_1u64(legal_idx_range, idx_range);
|
Rng1U64 read_range = intersect_1u64(legal_idx_range, idx_range);
|
||||||
U64 read_range_count = dim_1u64(read_range);
|
U64 read_range_count = dim_1u64(read_range);
|
||||||
for(U64 idx = 0; idx < read_range_count; idx += 1)
|
for(U64 idx = 0; idx < read_range_count; idx += 1)
|
||||||
{
|
{
|
||||||
U64 member_idx = idx + read_range.min;
|
U64 member_idx = idx + read_range.min;
|
||||||
String8 member_name = (lhs_type->members ? lhs_type->members[member_idx].name :
|
String8 member_name = (struct_type->members ? struct_type->members[member_idx].name :
|
||||||
lhs_type->enum_vals ? lhs_type->enum_vals[member_idx].name : str8_lit(""));
|
struct_type->enum_vals ? struct_type->enum_vals[member_idx].name : str8_lit(""));
|
||||||
exprs[idx] = e_expr_ref_member_access(arena, lhs, member_name);
|
exprs[idx] = e_expr_ref_member_access(arena, lhs, member_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user