CTest::CompressString: Reorder code to avoid unnecessary allocation

This commit is contained in:
Daniel Pfeifer 2016-09-23 22:04:47 +02:00
parent 6ed564577d
commit a5a7771a42
1 changed files with 8 additions and 9 deletions

View File

@ -2790,6 +2790,14 @@ bool cmCTest::CompressString(std::string& str)
int ret; int ret;
z_stream strm; z_stream strm;
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
ret = deflateInit(&strm, -1); // default compression level
if (ret != Z_OK) {
return false;
}
unsigned char* in = unsigned char* in =
reinterpret_cast<unsigned char*>(const_cast<char*>(str.c_str())); reinterpret_cast<unsigned char*>(const_cast<char*>(str.c_str()));
// zlib makes the guarantee that this is the maximum output size // zlib makes the guarantee that this is the maximum output size
@ -2797,15 +2805,6 @@ bool cmCTest::CompressString(std::string& str)
static_cast<int>(static_cast<double>(str.size()) * 1.001 + 13.0); static_cast<int>(static_cast<double>(str.size()) * 1.001 + 13.0);
unsigned char* out = new unsigned char[outSize]; unsigned char* out = new unsigned char[outSize];
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
ret = deflateInit(&strm, -1); // default compression level
if (ret != Z_OK) {
delete[] out;
return false;
}
strm.avail_in = static_cast<uInt>(str.size()); strm.avail_in = static_cast<uInt>(str.size());
strm.next_in = in; strm.next_in = in;
strm.avail_out = outSize; strm.avail_out = outSize;