mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-18 10:02:23 -07:00
fix <64-bit integer eval stringification path, to not interpret too many bits
This commit is contained in:
@@ -57,9 +57,11 @@ union E_Value
|
||||
U64 u64;
|
||||
U32 u32;
|
||||
U16 u16;
|
||||
U8 u8;
|
||||
S64 s64;
|
||||
S32 s32;
|
||||
S32 s16;
|
||||
S16 s16;
|
||||
S8 s8;
|
||||
F64 f64;
|
||||
F32 f32;
|
||||
};
|
||||
|
||||
@@ -1292,6 +1292,8 @@ ev_string_from_simple_typed_eval(Arena *arena, EV_StringParams *params, E_Eval e
|
||||
{
|
||||
digit_group_separator = 0;
|
||||
}
|
||||
S64 s64 = 0;
|
||||
U64 u64 = 0;
|
||||
F64 f64 = 0;
|
||||
switch(type_kind)
|
||||
{
|
||||
@@ -1366,20 +1368,22 @@ ev_string_from_simple_typed_eval(Arena *arena, EV_StringParams *params, E_Eval e
|
||||
}
|
||||
}break;
|
||||
|
||||
case E_TypeKind_S8:
|
||||
case E_TypeKind_S16:
|
||||
case E_TypeKind_S32:
|
||||
case E_TypeKind_S64:
|
||||
case E_TypeKind_S8: s64 = (S64)eval.value.s8; goto sint_path;
|
||||
case E_TypeKind_S16: s64 = (S64)eval.value.s16; goto sint_path;
|
||||
case E_TypeKind_S32: s64 = (S64)eval.value.s32; goto sint_path;
|
||||
case E_TypeKind_S64: s64 = (S64)eval.value.s64; goto sint_path;
|
||||
sint_path:;
|
||||
{
|
||||
result = str8_from_s64(arena, eval.value.s64, params->radix, params->min_digits, digit_group_separator);
|
||||
result = str8_from_s64(arena, s64, params->radix, params->min_digits, digit_group_separator);
|
||||
}break;
|
||||
|
||||
case E_TypeKind_U8:
|
||||
case E_TypeKind_U16:
|
||||
case E_TypeKind_U32:
|
||||
case E_TypeKind_U64:
|
||||
case E_TypeKind_U8: u64 = (U64)eval.value.u8; goto uint_path;
|
||||
case E_TypeKind_U16: u64 = (U64)eval.value.u16; goto uint_path;
|
||||
case E_TypeKind_U32: u64 = (U64)eval.value.u32; goto uint_path;
|
||||
case E_TypeKind_U64: u64 = (U64)eval.value.u64; goto uint_path;
|
||||
uint_path:;
|
||||
{
|
||||
result = str8_from_u64(arena, eval.value.u64, params->radix, params->min_digits, digit_group_separator);
|
||||
result = str8_from_u64(arena, u64, params->radix, params->min_digits, digit_group_separator);
|
||||
}break;
|
||||
|
||||
case E_TypeKind_U128:
|
||||
|
||||
@@ -395,6 +395,9 @@ type_coverage_eval_tests(void)
|
||||
Basics basics = {-1, 1, -2, 2, -4, 4, -8, 8, 1.5f, 1.50000000000001};
|
||||
Basics_Stdint basics_stdint = {-1, 1, -2, 2, -4, 4, -8, 8, 1.5f, 1.50000000000001};
|
||||
|
||||
uint32_t a = (1<<31);
|
||||
int32_t b = (1<<31);
|
||||
|
||||
char string[] = "Hello World!";
|
||||
char longer_text[] =
|
||||
"Suppose there was some text\n"
|
||||
|
||||
@@ -5072,6 +5072,23 @@ rd_view_ui(Rng2F32 rect)
|
||||
//- rjf: handle interactions
|
||||
//
|
||||
{
|
||||
// rjf: hover -> debug log
|
||||
if(DEV_eval_compiler_tooltips)
|
||||
{
|
||||
if(ui_hovering(sig)) UI_Tooltip
|
||||
{
|
||||
String8 text = e_debug_log_from_expr_string(scratch.arena, cell->eval.string);
|
||||
String8List lines = str8_split(scratch.arena, text, (U8 *)"\n", 1, StringSplitFlag_KeepEmpties);
|
||||
for(String8Node *n = lines.first; n != 0; n = n->next)
|
||||
{
|
||||
if(n->string.size != 0)
|
||||
{
|
||||
ui_label(n->string);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: hover -> rich hover cfgs
|
||||
if(ui_hovering(sig) && cell_info.cfg != &rd_nil_cfg)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user