diff options
-rw-r--r-- | sway/readline.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sway/readline.c b/sway/readline.c index be8c35cc..dfdc3fe8 100644 --- a/sway/readline.c +++ b/sway/readline.c | |||
@@ -3,7 +3,7 @@ | |||
3 | #include <stdio.h> | 3 | #include <stdio.h> |
4 | 4 | ||
5 | char *read_line(FILE *file) { | 5 | char *read_line(FILE *file) { |
6 | int i = 0, length = 0, size = 128; | 6 | int length = 0, size = 128; |
7 | char *string = malloc(size); | 7 | char *string = malloc(size); |
8 | if (!string) { | 8 | if (!string) { |
9 | return NULL; | 9 | return NULL; |
@@ -16,21 +16,20 @@ char *read_line(FILE *file) { | |||
16 | if (c == '\r') { | 16 | if (c == '\r') { |
17 | continue; | 17 | continue; |
18 | } | 18 | } |
19 | if (i == size) { | 19 | if (length == size) { |
20 | string = realloc(string, length *= 2); | 20 | string = realloc(string, size *= 2); |
21 | if (!string) { | 21 | if (!string) { |
22 | return NULL; | 22 | return NULL; |
23 | } | 23 | } |
24 | } | 24 | } |
25 | string[i++] = (char)c; | 25 | string[length++] = c; |
26 | length++; | ||
27 | } | 26 | } |
28 | if (i + 1 != size) { | 27 | if (length + 1 == size) { |
29 | string = realloc(string, length + 1); | 28 | string = realloc(string, length + 1); |
30 | if (!string) { | 29 | if (!string) { |
31 | return NULL; | 30 | return NULL; |
32 | } | 31 | } |
33 | } | 32 | } |
34 | string[i] = '\0'; | 33 | string[length] = '\0'; |
35 | return string; | 34 | return string; |
36 | } | 35 | } |