Mercurial > dovecot > core-2.2
changeset 15736:c31ee24e7255
fs-metawrap: Memory leak fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 05 Feb 2013 03:23:46 +0200 |
parents | 275973a62419 |
children | be320a216190 |
files | src/lib-fs/fs-metawrap.c |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fs/fs-metawrap.c Tue Feb 05 03:23:30 2013 +0200 +++ b/src/lib-fs/fs-metawrap.c Tue Feb 05 03:23:46 2013 +0200 @@ -126,7 +126,7 @@ } else { file->super_read = file->super; } - i_array_init(&file->file.metadata, 8); + fs_metadata_init(&file->file); return &file->file; } @@ -134,10 +134,11 @@ { struct metawrap_fs_file *file = (struct metawrap_fs_file *)_file; + if (file->input != NULL) + i_stream_unref(&file->input); if (file->super_read != file->super) fs_file_deinit(&file->super_read); fs_file_deinit(&file->super); - array_free(&file->file.metadata); i_free(file->file.path); i_free(file); } @@ -245,6 +246,7 @@ return fs_read_stream(file->super, max_buffer_size); if (file->input != NULL) { + i_stream_ref(file->input); i_stream_seek(file->input, 0); return file->input; } @@ -253,6 +255,7 @@ I_MAX(max_buffer_size, MAX_METADATA_LINE_LEN)); file->input = i_stream_create_metawrap(input, fs_metawrap_callback, file); i_stream_unref(&input); + i_stream_ref(file->input); return file->input; } @@ -383,8 +386,8 @@ i_stream_unref(&input); return -1; } + i_stream_unref(&input); if (ret == 0) { - i_stream_unref(&input); fs_set_error_async(_file->fs); return -1; }