Fix nocomp compression
authorJonathan Dieter <jdieter@gmail.com>
Thu, 26 Jul 2018 21:15:47 +0000 (22:15 +0100)
committerJonathan Dieter <jdieter@gmail.com>
Thu, 26 Jul 2018 21:32:48 +0000 (22:32 +0100)
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
src/lib/comp/comp.c
src/lib/comp/nocomp/nocomp.c
src/lib/comp/zstd/zstd.c

index 76824667854a74835969aa245005493d784f6678..858109305f75266e689cc51ca8a8649cd7a02e14 100644 (file)
@@ -152,6 +152,8 @@ static ssize_t comp_write(zckCtx *zck, const char *src, const size_t src_size) {
     if(zck->comp.compress(zck, &(zck->comp), src, src_size, &dst,
                           &dst_size, 1) < 0)
         return -1;
+    zck->comp.dc_data_size += src_size;
+
     if(dst_size > 0 && !write_data(zck, zck->temp_fd, dst, dst_size)) {
         free(dst);
         return -1;
@@ -221,6 +223,7 @@ int comp_init(zckCtx *zck) {
             if(zck->comp.compress(zck, comp, zck->comp.dict,
                                   zck->comp.dict_size, &dst, &dst_size, 0) < 0)
                 return False;
+            zck->comp.dc_data_size = zck->comp.dict_size;
             if(!write_data(zck, zck->temp_fd, dst, dst_size)) {
                 free(dst);
                 return False;
@@ -236,6 +239,7 @@ int comp_init(zckCtx *zck) {
 
             if(!zck->comp.end_cchunk(zck, comp, &dst, &dst_size, 0))
                 return False;
+            zck->comp.dc_data_size = 0;
             if(!write_data(zck, zck->temp_fd, dst, dst_size)) {
                 free(dst);
                 return False;
@@ -545,7 +549,6 @@ ssize_t PUBLIC zck_write(zckCtx *zck, const char *src, const size_t src_size) {
     const char *loc = src;
     size_t loc_size = src_size;
     size_t loc_written = 0;
-    zck_log(ZCK_LOG_DDEBUG, "Size: %lu", zck->comp.dc_data_size + loc_size);
 
     if(zck->manual_chunk) {
         while(zck->comp.dc_data_size + loc_size > zck->chunk_max_size) {
@@ -617,6 +620,7 @@ ssize_t PUBLIC zck_end_chunk(zckCtx *zck) {
     size_t dst_size = 0;
     if(!zck->comp.end_cchunk(zck, &(zck->comp), &dst, &dst_size, 1))
         return -1;
+    zck->comp.dc_data_size = 0;
     if(dst_size > 0 && !write_data(zck, zck->temp_fd, dst, dst_size)) {
         free(dst);
         return -1;
index 3ab7db6bf5789e8620cd4829d97626ceb90d1e16..233564d773d74be6d58b42553efa5296740853d0 100644 (file)
 #include "zck_private.h"
 
 static int init(zckCtx *zck, zckComp *comp) {
-    return True;
-}
-
-static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
-                     int use_dict) {
-    *dst = NULL;
-    *dst_size = 0;
+    VALIDATE_BOOL(zck);
+    ALLOCD_BOOL(comp);
 
     return True;
 }
@@ -46,6 +41,9 @@ static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
 static ssize_t compress(zckCtx *zck, zckComp *comp, const char *src,
                         const size_t src_size, char **dst, size_t *dst_size,
                         int use_dict) {
+    VALIDATE_INT(zck);
+    ALLOCD_INT(comp);
+
     *dst = zmalloc(src_size);
     if(dst == NULL) {
         set_fatal_error(zck, "Unable to allocate %lu bytes", src_size);
@@ -58,8 +56,21 @@ static ssize_t compress(zckCtx *zck, zckComp *comp, const char *src,
     return *dst_size;
 }
 
+static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
+                     int use_dict) {
+    VALIDATE_BOOL(zck);
+    ALLOCD_BOOL(comp);
+
+    *dst = NULL;
+    *dst_size = 0;
+
+    return True;
+}
 
 static int decompress(zckCtx *zck, zckComp *comp, const int use_dict) {
+    VALIDATE_BOOL(zck);
+    ALLOCD_BOOL(comp);
+
     char *src = comp->data;
     char src_size = comp->data_size;
     comp->data = NULL;
index 301dc04f387339f92ecc9207b72965a9d091f03c..e50f7cb23adeb02f1de6d0dc05ead63762c7bd37 100644 (file)
@@ -74,7 +74,6 @@ static ssize_t compress(zckCtx *zck, zckComp *comp, const char *src,
     memcpy(comp->dc_data + comp->dc_data_size, src, src_size);
     *dst = NULL;
     *dst_size = 0;
-    comp->dc_data_size += src_size;
     return 0;
 }
 
@@ -106,7 +105,6 @@ static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
     }
     free(comp->dc_data);
     comp->dc_data = NULL;
-    comp->dc_data_size = 0;
     comp->dc_data_loc = 0;
     if(ZSTD_isError(*dst_size)) {
         set_fatal_error(zck, "zstd compression error: %s",