]> git.seodisparate.com - SimpleArchiver/commitdiff
Fix bug where writing to archive fails sometimes
authorStephen Seo <seo.disparate@gmail.com>
Wed, 9 Apr 2025 09:52:27 +0000 (18:52 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 9 Apr 2025 09:52:27 +0000 (18:52 +0900)
Written bytes was not correctly calculated because it was not checking
against actual written-byte count, but was erronously using the prior
read-byte count.

src/archiver.c

index b6e38bc4c28b707671271bfdd7dc0d1d7bd93bd6..a91de604bacda7ff23504f26f511fbb9870a8ee7 100644 (file)
@@ -3307,7 +3307,7 @@ SDArchiverStateRetStruct simple_archiver_write_v1(
         size_t fread_ret = fread(buf, 1, SIMPLE_ARCHIVER_BUFFER_SIZE, temp_fd);
         if (fread_ret > 0) {
           size_t fwrite_ret = fwrite(buf, 1, fread_ret, out_f);
-          written_size += fread_ret;
+          written_size += fwrite_ret;
           if (fwrite_ret != fread_ret) {
             fprintf(stderr,
                     "ERROR: Partial write of read bytes from temp file to "
@@ -4282,7 +4282,7 @@ SDArchiverStateRetStruct simple_archiver_write_v2(
         size_t fread_ret = fread(buf, 1, SIMPLE_ARCHIVER_BUFFER_SIZE, temp_fd);
         if (fread_ret > 0) {
           size_t fwrite_ret = fwrite(buf, 1, fread_ret, out_f);
-          written_size += fread_ret;
+          written_size += fwrite_ret;
           if (fwrite_ret != fread_ret) {
             fprintf(stderr,
                     "ERROR: Partial write of read bytes from temp file to "
@@ -5516,7 +5516,7 @@ SDArchiverStateRetStruct simple_archiver_write_v3(
         size_t fread_ret = fread(buf, 1, SIMPLE_ARCHIVER_BUFFER_SIZE, temp_fd);
         if (fread_ret > 0) {
           size_t fwrite_ret = fwrite(buf, 1, fread_ret, out_f);
-          written_size += fread_ret;
+          written_size += fwrite_ret;
           if (fwrite_ret != fread_ret) {
             fprintf(stderr,
                     "ERROR: Partial write of read bytes from temp file to "
@@ -6688,7 +6688,7 @@ SDArchiverStateRetStruct simple_archiver_write_v4(
         size_t fread_ret = fread(buf, 1, SIMPLE_ARCHIVER_BUFFER_SIZE, temp_fd);
         if (fread_ret > 0) {
           size_t fwrite_ret = fwrite(buf, 1, fread_ret, out_f);
-          written_size += fread_ret;
+          written_size += fwrite_ret;
           if (fwrite_ret != fread_ret) {
             fprintf(stderr,
                     "ERROR: Partial write of read bytes from temp file to "