mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00:00
correctly use array sizes in value string string literal visualization; slices / array lengths now correctly apply to string visualization
This commit is contained in:
@@ -9473,7 +9473,7 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
|||||||
{
|
{
|
||||||
U64 element_size = e_type_byte_size_from_key(direct_type_key);
|
U64 element_size = e_type_byte_size_from_key(direct_type_key);
|
||||||
did_content = 1;
|
did_content = 1;
|
||||||
U64 string_buffer_size = 256;
|
U64 string_buffer_size = Clamp(1, array_count, 1024);
|
||||||
U8 *string_buffer = push_array(arena, U8, string_buffer_size);
|
U8 *string_buffer = push_array(arena, U8, string_buffer_size);
|
||||||
switch(eval.mode)
|
switch(eval.mode)
|
||||||
{
|
{
|
||||||
@@ -9481,26 +9481,18 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
|||||||
case E_Mode_Offset:
|
case E_Mode_Offset:
|
||||||
{
|
{
|
||||||
U64 string_memory_addr = eval.value.u64;
|
U64 string_memory_addr = eval.value.u64;
|
||||||
for(U64 try_size = string_buffer_size; try_size >= 16; try_size /= 2)
|
B32 read_good = e_space_read(eval.space, string_buffer, r1u64(string_memory_addr, string_memory_addr+string_buffer_size));
|
||||||
{
|
|
||||||
B32 read_good = e_space_read(eval.space, string_buffer, r1u64(string_memory_addr, string_memory_addr+try_size));
|
|
||||||
if(read_good)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
}break;
|
||||||
case E_Mode_Value:
|
case E_Mode_Value:
|
||||||
{
|
{
|
||||||
MemoryCopy(string_buffer, &eval.value.u512[0], Min(string_buffer_size, sizeof(eval.value)));
|
MemoryCopy(string_buffer, &eval.value.u512[0], Min(string_buffer_size, sizeof(eval.value)));
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
string_buffer[string_buffer_size-1] = 0;
|
|
||||||
String8 string = {0};
|
String8 string = {0};
|
||||||
switch(element_size)
|
switch(element_size)
|
||||||
{
|
{
|
||||||
default:{string = str8_cstring((char *)string_buffer);}break;
|
default:{string = str8_cstring_capped(string_buffer, string_buffer + string_buffer_size);}break;
|
||||||
case 2: {string = str8_from_16(arena, str16_cstring((U16 *)string_buffer));}break;
|
case 2: {string = str8_from_16(arena, str16_cstring_capped(string_buffer, string_buffer + string_buffer_size));}break;
|
||||||
case 4: {string = str8_from_32(arena, str32_cstring((U32 *)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 = ev_escaped_from_raw_string(arena, string);
|
||||||
|
|||||||
Reference in New Issue
Block a user