CTest::Base64EncodeFile: Avoid manual delete

This commit is contained in:
Daniel Pfeifer 2016-09-23 22:03:49 +02:00
parent 6757e66089
commit 6ed564577d
1 changed files with 7 additions and 12 deletions

View File

@ -1506,22 +1506,17 @@ std::string cmCTest::Base64EncodeFile(std::string const& file)
| std::ios::binary | std::ios::binary
#endif #endif
); );
unsigned char* file_buffer = new unsigned char[len + 1]; std::vector<char> file_buffer(len + 1);
ifs.read(reinterpret_cast<char*>(file_buffer), len); ifs.read(&file_buffer[0], len);
ifs.close(); ifs.close();
unsigned char* encoded_buffer = new unsigned char[(len * 3) / 2 + 5]; std::vector<char> encoded_buffer((len * 3) / 2 + 5);
size_t const rlen = cmsysBase64_Encode(file_buffer, len, encoded_buffer, 1); size_t const rlen = cmsysBase64_Encode(
reinterpret_cast<unsigned char*>(&file_buffer[0]), len,
reinterpret_cast<unsigned char*>(&encoded_buffer[0]), 1);
std::string base64 = ""; return std::string(&encoded_buffer[0], rlen);
for (size_t i = 0; i < rlen; i++) {
base64 += encoded_buffer[i];
}
delete[] file_buffer;
delete[] encoded_buffer;
return base64;
} }
bool cmCTest::SubmitExtraFiles(const VectorOfStrings& files) bool cmCTest::SubmitExtraFiles(const VectorOfStrings& files)