diff options
author | Alexander 'z33ky' Hirsch <1zeeky@gmail.com> | 2015-08-20 02:24:47 +0200 |
---|---|---|
committer | Alexander 'z33ky' Hirsch <1zeeky@gmail.com> | 2015-08-20 02:30:22 +0200 |
commit | f85d0740a83c32f9ef4d7f73b3dd25cff3a6239a (patch) | |
tree | 9cbd38bb3ddad41ed436180acf6b8d6f7169bdde | |
parent | Minor style fix (diff) | |
download | sway-f85d0740a83c32f9ef4d7f73b3dd25cff3a6239a.tar.gz sway-f85d0740a83c32f9ef4d7f73b3dd25cff3a6239a.tar.zst sway-f85d0740a83c32f9ef4d7f73b3dd25cff3a6239a.zip |
Fix potential memory leak
-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; |