diff options
Diffstat (limited to 'sway/readline.c')
-rw-r--r-- | sway/readline.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sway/readline.c b/sway/readline.c index dfdc3fe8..e75b183f 100644 --- a/sway/readline.c +++ b/sway/readline.c | |||
@@ -17,18 +17,22 @@ char *read_line(FILE *file) { | |||
17 | continue; | 17 | continue; |
18 | } | 18 | } |
19 | if (length == size) { | 19 | if (length == size) { |
20 | string = realloc(string, size *= 2); | 20 | char *new_string = realloc(string, size *= 2); |
21 | if (!string) { | 21 | if (!new_string) { |
22 | free(string); | ||
22 | return NULL; | 23 | return NULL; |
23 | } | 24 | } |
25 | string = new_string; | ||
24 | } | 26 | } |
25 | string[length++] = c; | 27 | string[length++] = c; |
26 | } | 28 | } |
27 | if (length + 1 == size) { | 29 | if (length + 1 == size) { |
28 | string = realloc(string, length + 1); | 30 | char *new_string = realloc(string, length + 1); |
29 | if (!string) { | 31 | if (!new_string) { |
32 | free(string); | ||
30 | return NULL; | 33 | return NULL; |
31 | } | 34 | } |
35 | string = new_string; | ||
32 | } | 36 | } |
33 | string[length] = '\0'; | 37 | string[length] = '\0'; |
34 | return string; | 38 | return string; |