fix a bunch of small memory leaks around REPLXX
not that they'd cause any problems in practice - they're very small, and are in the one context where GC can actually run
This commit is contained in:
parent
e2c21f6103
commit
24dba9ba40
@ -289,10 +289,11 @@ static bool isCmd(char* s, char** e, const char* cmd) {
|
|||||||
void hint_replxx(const char* inp, replxx_hints* res, int* dist, ReplxxColor* c, void* data) {
|
void hint_replxx(const char* inp, replxx_hints* res, int* dist, ReplxxColor* c, void* data) {
|
||||||
completion_impl(inp, res, true, dist);
|
completion_impl(inp, res, true, dist);
|
||||||
}
|
}
|
||||||
static NOINLINE char* malloc_B(B x) { // toCStr but allocated by malloc
|
static NOINLINE char* malloc_B(B x) { // toCStr but allocated by malloc; frees x
|
||||||
u64 len1 = utf8lenB(x);
|
u64 len1 = utf8lenB(x);
|
||||||
char* s1 = malloc(len1+1);
|
char* s1 = malloc(len1+1);
|
||||||
toUTF8(x, s1);
|
toUTF8(x, s1);
|
||||||
|
decG(x);
|
||||||
s1[len1] = '\0';
|
s1[len1] = '\0';
|
||||||
return s1;
|
return s1;
|
||||||
}
|
}
|
||||||
@ -305,7 +306,7 @@ static bool isCmd(char* s, char** e, const char* cmd) {
|
|||||||
replxx_get_state(global_replxx, &st);
|
replxx_get_state(global_replxx, &st);
|
||||||
return (TmpState){.s = utf8Decode0(st.text), .pos = st.cursorPosition};
|
return (TmpState){.s = utf8Decode0(st.text), .pos = st.cursorPosition};
|
||||||
}
|
}
|
||||||
static NOINLINE void setState(TmpState s) {
|
static NOINLINE void setState(TmpState s) { // frees s.s
|
||||||
char* r = malloc_B(s.s);
|
char* r = malloc_B(s.s);
|
||||||
ReplxxState st = (ReplxxState){.text = r, .cursorPosition = s.pos};
|
ReplxxState st = (ReplxxState){.text = r, .cursorPosition = s.pos};
|
||||||
replxx_set_state(global_replxx, &st);
|
replxx_set_state(global_replxx, &st);
|
||||||
@ -428,7 +429,9 @@ static bool isCmd(char* s, char** e, const char* cmd) {
|
|||||||
char* s = toCStr(ln); char* e;
|
char* s = toCStr(ln); char* e;
|
||||||
if (isCmd(s, &e, "theme=" )) cfg_theme = e[0]-'0';
|
if (isCmd(s, &e, "theme=" )) cfg_theme = e[0]-'0';
|
||||||
else if (isCmd(s, &e, "keyboard=")) cfg_enableKeyboard = e[0]-'0';
|
else if (isCmd(s, &e, "keyboard=")) cfg_enableKeyboard = e[0]-'0';
|
||||||
|
freeCStr(s);
|
||||||
}
|
}
|
||||||
|
decG(lns);
|
||||||
cfg_set_theme(cfg_theme, false);
|
cfg_set_theme(cfg_theme, false);
|
||||||
cfg_set_keyboard(cfg_enableKeyboard, false);
|
cfg_set_keyboard(cfg_enableKeyboard, false);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user