From e8e8578d7f942bb9754d6de19bc31e45e41182cf Mon Sep 17 00:00:00 2001 From: Martin Jerabek Date: Sun, 16 Aug 2015 18:08:19 +0200 Subject: [PATCH] assimp_cmd: fix writing compressed binary assimp format Also print someting to console when compression fails. --- tools/assimp_cmd/WriteDumb.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/assimp_cmd/WriteDumb.cpp b/tools/assimp_cmd/WriteDumb.cpp index 3fbfab824..b05adf249 100644 --- a/tools/assimp_cmd/WriteDumb.cpp +++ b/tools/assimp_cmd/WriteDumb.cpp @@ -82,15 +82,18 @@ void CompressBinaryDump(const char* file, unsigned int head_size) uint8_t* data = new uint8_t[size]; fread(data,1,size,p); - uLongf out_size = (uLongf)((size-head_size) * 1.001 + 12.); + uint32_t uncompressed_size = size-head_size; + uLongf out_size = (uLongf)compressBound(uncompressed_size); uint8_t* out = new uint8_t[out_size]; - compress2(out,&out_size,data+head_size,size-head_size,9); + int res = compress2(out,&out_size,data+head_size,uncompressed_size,9); + if(res != Z_OK) + fprintf(stderr, "compress2: error\n"); fclose(p); p = fopen(file,"w"); fwrite(data,head_size,1,p); - fwrite(&out_size,4,1,p); // write size of uncompressed data + fwrite(&uncompressed_size,4,1,p); // write size of uncompressed data fwrite(out,out_size,1,p); fclose(p);