diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2021-03-31 19:22:11 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-31 19:22:11 -0400 |
commit | a177820420d3de1614bff01321c0a54a2327fab3 (patch) | |
tree | 54a2ea52ae7ca218f96416ba1ebebd09f10063ba /src/nvim/os/pty_process_win.c | |
parent | d55a69168f0ede6021ffe43dd8c059a350502dbc (diff) | |
parent | 5e4fb9a7dd9392cc59ab6b4f03a9f266c048b86c (diff) | |
download | rneovim-a177820420d3de1614bff01321c0a54a2327fab3.tar.gz rneovim-a177820420d3de1614bff01321c0a54a2327fab3.tar.bz2 rneovim-a177820420d3de1614bff01321c0a54a2327fab3.zip |
Merge pull request #14259 from janlazo/fix-dictwatcherdel-crash
Fix dictwatcherdel crash
Diffstat (limited to 'src/nvim/os/pty_process_win.c')
-rw-r--r-- | src/nvim/os/pty_process_win.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/nvim/os/pty_process_win.c b/src/nvim/os/pty_process_win.c index 52d2f84ace..94444e4d23 100644 --- a/src/nvim/os/pty_process_win.c +++ b/src/nvim/os/pty_process_win.c @@ -343,19 +343,17 @@ static int build_cmd_line(char **argv, wchar_t **cmd_line, bool is_cmdexe) utf8_cmd_line_len += argc; char *utf8_cmd_line = xmalloc(utf8_cmd_line_len); *utf8_cmd_line = NUL; - while (1) { - QUEUE *head = QUEUE_HEAD(&args_q); - QUEUE_REMOVE(head); - ArgNode *arg_node = QUEUE_DATA(head, ArgNode, node); + QUEUE *q; + QUEUE_FOREACH(q, &args_q, { + ArgNode *arg_node = QUEUE_DATA(q, ArgNode, node); xstrlcat(utf8_cmd_line, arg_node->arg, utf8_cmd_line_len); xfree(arg_node->arg); xfree(arg_node); - if (QUEUE_EMPTY(&args_q)) { - break; - } else { + QUEUE_REMOVE(q); + if (!QUEUE_EMPTY(&args_q)) { xstrlcat(utf8_cmd_line, " ", utf8_cmd_line_len); } - } + }) int result = utf8_to_utf16(utf8_cmd_line, -1, cmd_line); xfree(utf8_cmd_line); @@ -507,11 +505,11 @@ static int build_env_block(dict_T *denv, wchar_t **env_block) *env_block = xmalloc(sizeof(**env_block) * env_block_len); wchar_t *pos = *env_block; - QUEUE_FOREACH(q, &env_q) { + QUEUE_FOREACH(q, &env_q, { EnvNode *env_node = QUEUE_DATA(q, EnvNode, node); memcpy(pos, env_node->str, env_node->len * sizeof(*pos)); pos += env_node->len; - } + }) *pos = L'\0'; |