diff options
Diffstat (limited to 'sway/stringop.c')
-rw-r--r-- | sway/stringop.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sway/stringop.c b/sway/stringop.c index 7de6eded..270e673a 100644 --- a/sway/stringop.c +++ b/sway/stringop.c | |||
@@ -99,7 +99,7 @@ void free_flat_list(list_t *list) { | |||
99 | char **split_args(const char *start, int *argc) { | 99 | char **split_args(const char *start, int *argc) { |
100 | *argc = 0; | 100 | *argc = 0; |
101 | int alloc = 2; | 101 | int alloc = 2; |
102 | char **parts = malloc(sizeof(char *) * alloc); | 102 | char **argv = malloc(sizeof(char *) * alloc); |
103 | bool in_token = false; | 103 | bool in_token = false; |
104 | bool in_string = false; | 104 | bool in_string = false; |
105 | bool in_char = false; | 105 | bool in_char = false; |
@@ -132,15 +132,16 @@ char **split_args(const char *start, int *argc) { | |||
132 | token[end - start] = '\0'; | 132 | token[end - start] = '\0'; |
133 | strip_quotes(token); | 133 | strip_quotes(token); |
134 | unescape_string(token); | 134 | unescape_string(token); |
135 | parts[*argc] = token; | 135 | argv[*argc] = token; |
136 | if (++*argc == alloc) { | 136 | if (++*argc + 1 == alloc) { |
137 | parts = realloc(parts, (alloc *= 2) * sizeof(char *)); | 137 | argv = realloc(argv, (alloc *= 2) * sizeof(char *)); |
138 | } | 138 | } |
139 | } | 139 | } |
140 | in_token = false; | 140 | in_token = false; |
141 | escaped = false; | 141 | escaped = false; |
142 | } | 142 | } |
143 | return parts; | 143 | argv[*argc] = NULL; |
144 | return argv; | ||
144 | } | 145 | } |
145 | 146 | ||
146 | void free_argv(int argc, char **argv) { | 147 | void free_argv(int argc, char **argv) { |