if (file->fd == -1 && fs_posix_open(file) < 0)
input = i_stream_create_error_str(errno, "%s", fs_last_error(_file->fs));
- else
- input = i_stream_create_fd(file->fd, max_buffer_size, FALSE);
+ else {
+ /* the stream could live even after the fs_file */
+ input = i_stream_create_fd_autoclose(&file->fd, max_buffer_size);
+ }
i_stream_set_name(input, _file->path);
- i_stream_add_destroy_callback(input, fs_posix_file_close, _file);
return input;
}