diff options
| author | Mistivia <i@mistivia.com> | 2025-12-20 04:03:21 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-12-20 04:03:21 +0800 |
| commit | 1b59dbec2cc58b6b2404cf1732239e70a4915c69 (patch) | |
| tree | bc548addfc2cf0ec13ee91aa5fc40d1fe642ef5a | |
| parent | baf05355db3bb624fcd114665980d8721b8f243b (diff) | |
fix fgetline mem leak
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | str.c | 14 |
2 files changed, 12 insertions, 3 deletions
@@ -1,3 +1,4 @@ +tags /test_* *.o *.d @@ -153,9 +153,17 @@ char *fgetline(FILE *fp) { init_str_builder(&sb); while (true) { int c = fgetc(fp); - if (c == EOF && sb.size == 0) return NULL; - if (c != EOF) str_builder_append_char(&sb, c); - if (c == EOF || c == '\n') return sb.buf; + if (c == EOF && sb.size == 0) { + free(sb.buf); + return NULL; + } + if (c != EOF) { + str_builder_append_char(&sb, c); + } + if (c == EOF || c == '\n') { + str_builder_append_char(&sb, '\0'); + return sb.buf; + } } return NULL; } |
