fix backslash escaping rules in cfg serialization; fix small scrolling (e.g. from trackpad) often being truncated to having no effect; fixed hanging when set-thread-name specifies a non-readable address

This commit is contained in:
Ryan Fleury
2024-04-09 07:37:53 -07:00
parent 36b50981ff
commit d560f8c734
3 changed files with 15 additions and 4 deletions
+4
View File
@@ -2136,6 +2136,10 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls)
break;
}
}
else
{
read_addr += 256;
}
}
}
e->kind = DMN_EventKind_SetThreadName;
+4 -2
View File
@@ -5738,7 +5738,7 @@ df_cfg_escaped_from_raw_string(Arena *arena, String8 string)
for(U64 idx = 0; idx <= string.size; idx += 1)
{
U8 byte = (idx < string.size ? string.str[idx] : 0);
if(byte == 0 || byte == '\"')
if(byte == 0 || byte == '\"' || byte == '\\')
{
String8 part = str8_substr(string, r1u64(split_start_idx, idx));
str8_list_push(scratch.arena, &parts, part);
@@ -5746,6 +5746,7 @@ df_cfg_escaped_from_raw_string(Arena *arena, String8 string)
{
default:{}break;
case '\"':{str8_list_push(scratch.arena, &parts, str8_lit("\\\""));}break;
case '\\':{str8_list_push(scratch.arena, &parts, str8_lit("\\\\"));}break;
}
split_start_idx = idx+1;
}
@@ -5775,7 +5776,8 @@ df_cfg_raw_from_escaped_string(Arena *arena, String8 string)
switch(string.str[idx+1])
{
default:{}break;
case '"':{extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\""));}break;
case '"': {extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\""));}break;
case '\\':{extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\\"));}break;
}
}
split_start_idx = idx+1+extra_advance;
+7 -2
View File
@@ -2525,8 +2525,13 @@ ui_signal_from_box(UI_Box *box)
{
Swap(F32, delta.x, delta.y);
}
sig.scroll.x += (S16)(delta.x/30.f);
sig.scroll.y += (S16)(delta.y/30.f);
Vec2S16 delta16 = v2s16((S16)(delta.x/30.f), (S16)(delta.y/30.f));
if(delta.x > 0 && delta16.x == 0) { delta16.x = +1; }
if(delta.x < 0 && delta16.x == 0) { delta16.x = -1; }
if(delta.y > 0 && delta16.y == 0) { delta16.y = +1; }
if(delta.y < 0 && delta16.y == 0) { delta16.y = -1; }
sig.scroll.x += delta16.x;
sig.scroll.y += delta16.y;
taken = 1;
}