Changeset: 7bc4d9700927 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7bc4d9700927 Modified Files: common/stream/stream.c Branch: Jun2020 Log Message:
Deduplicate code. diffs (82 lines): diff --git a/common/stream/stream.c b/common/stream/stream.c --- a/common/stream/stream.c +++ b/common/stream/stream.c @@ -1782,52 +1782,6 @@ stream_lz4write(stream *restrict s, cons return (ssize_t) (total_written / elmsize); } -static void -stream_lz4close(stream *s) -{ - lz4_stream *lz4 = s->stream_data.p; - - if (lz4) { - if (!s->readonly) { - size_t ret, real_written; - - if (lz4->total_processing > 0 && lz4->total_processing < lz4->ring_buffer_size) { /* compress remaining */ - real_written = fwrite(lz4->ring_buffer, 1, lz4->total_processing, lz4->fp); - if (real_written == 0) { - s->errnr = MNSTR_WRITE_ERROR; - return ; - } - lz4->total_processing = 0; - } /* finish compression */ - ret = LZ4F_compressEnd(lz4->context.comp_context, lz4->ring_buffer, lz4->ring_buffer_size, NULL); - if(LZ4F_isError(ret)) { - s->errnr = MNSTR_WRITE_ERROR; - return ; - } - assert(ret < LZ4DECOMPBUFSIZ); - lz4->total_processing = ret; - - real_written = fwrite(lz4->ring_buffer, 1, lz4->total_processing, lz4->fp); - if (real_written == 0) { - s->errnr = MNSTR_WRITE_ERROR; - return ; - } - lz4->total_processing = 0; - - fflush(lz4->fp); - } - if(!s->readonly) { - (void) LZ4F_freeCompressionContext(lz4->context.comp_context); - } else { - (void) LZ4F_freeDecompressionContext(lz4->context.dec_context); - } - fclose(lz4->fp); - free(lz4->ring_buffer); - free(lz4); - } - s->stream_data.p = NULL; -} - static int stream_lz4flush(stream *s) { @@ -1864,6 +1818,25 @@ stream_lz4flush(stream *s) return 0; } +static void +stream_lz4close(stream *s) +{ + lz4_stream *lz4 = s->stream_data.p; + + if (lz4) { + stream_lz4flush(s); + if(!s->readonly) { + (void) LZ4F_freeCompressionContext(lz4->context.comp_context); + } else { + (void) LZ4F_freeDecompressionContext(lz4->context.dec_context); + } + fclose(lz4->fp); + free(lz4->ring_buffer); + free(lz4); + } + s->stream_data.p = NULL; +} + static stream * open_lz4stream(const char *restrict filename, const char *restrict flags) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list