[cmake-developers] [PATCH] Avoid bad alloc for large files

Justin Borodinsky justin.borodinsky at gmail.com
Sat Dec 20 08:26:07 EST 2014


I received a bad alloc when uploading a large file with CTest. The patch
below resolved this.



---
 Source/cmCTest.cxx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index 2bf7b77..52bf651 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -1688,7 +1688,7 @@ std::string cmCTest::Base64GzipEncodeFile(std::string
file)
 //----------------------------------------------------------------------
 std::string cmCTest::Base64EncodeFile(std::string file)
 {
-  long len = cmSystemTools::FileLength(file);
+  std::size_t len =
static_cast<std::size_t>(cmSystemTools::FileLength(file));
   cmsys::ifstream ifs(file.c_str(), std::ios::in
 #ifdef _WIN32
     | std::ios::binary
@@ -1699,7 +1699,7 @@ std::string cmCTest::Base64EncodeFile(std::string
file)
   ifs.close();

   unsigned char *encoded_buffer
-    = new unsigned char [ static_cast<int>(
+    = new unsigned char [ static_cast<std::size_t>(
         static_cast<double>(len) * 1.5 + 5.0) ];

   unsigned long rlen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20141220/075fc4e8/attachment.html>


More information about the cmake-developers mailing list