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

Reply via email to