From: Stephen Seo Date: Wed, 9 Apr 2025 09:52:27 +0000 (+0900) Subject: Fix bug where writing to archive fails sometimes X-Git-Tag: 1.19^2~1 X-Git-Url: https://git.seodisparate.com/stephenseo/search/main.js?a=commitdiff_plain;h=cbc8b2c3c8adf97479f44ec74bc50707c14f32a3;p=SimpleArchiver Fix bug where writing to archive fails sometimes 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. --- diff --git a/src/archiver.c b/src/archiver.c index b6e38bc..a91de60 100644 --- a/src/archiver.c +++ b/src/archiver.c @@ -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 "