You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@orc.apache.org by om...@apache.org on 2017/01/03 20:03:57 UTC

orc git commit: ORC-123: Fix memory leaks in ToolTest.cc (Deepak Majeti via omalley)

Repository: orc
Updated Branches:
  refs/heads/master fe45ac360 -> e1498f255


ORC-123: Fix memory leaks in ToolTest.cc (Deepak Majeti via omalley)

Fixes #74

Signed-off-by: Owen O'Malley <om...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/orc/repo
Commit: http://git-wip-us.apache.org/repos/asf/orc/commit/e1498f25
Tree: http://git-wip-us.apache.org/repos/asf/orc/tree/e1498f25
Diff: http://git-wip-us.apache.org/repos/asf/orc/diff/e1498f25

Branch: refs/heads/master
Commit: e1498f255954754de5735d744306dfbb02211a58
Parents: fe45ac3
Author: Deepak Majeti <de...@hpe.com>
Authored: Fri Dec 16 13:43:52 2016 -0500
Committer: Owen O'Malley <om...@apache.org>
Committed: Tue Jan 3 12:02:50 2017 -0800

----------------------------------------------------------------------
 tools/test/ToolTest.cc | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/e1498f25/tools/test/ToolTest.cc
----------------------------------------------------------------------
diff --git a/tools/test/ToolTest.cc b/tools/test/ToolTest.cc
index 437ac5a..10b7a5f 100644
--- a/tools/test/ToolTest.cc
+++ b/tools/test/ToolTest.cc
@@ -18,6 +18,7 @@
 
 
 #include "orc/orc-config.hh"
+#include "orc/OrcFile.hh"
 #include "ToolTest.hh"
 
 #include "wrap/orc-proto-wrapper.hh"
@@ -82,8 +83,10 @@ int runProgram(const std::vector<std::string>& command,
                std::string &err) {
 
   // create temporary filenames for stdout and stderr
-  char *stdoutName = strdup("/tmp/orc-test-stdout-XXXXXXXX");
-  char *stderrName = strdup("/tmp/orc-test-stderr-XXXXXXXX");
+  std::string stdoutStr = "/tmp/orc-test-stdout-XXXXXXXX";
+  std::string stderrStr = "/tmp/orc-test-stderr-XXXXXXXX";
+  char *stdoutName = const_cast<char*>(stdoutStr.data());
+  char *stderrName = const_cast<char*>(stderrStr.data());
   if (mkstemp(stdoutName) == -1) {
     std::cerr << "Failed to make unique name " << stdoutName
               << " - " << strerror(errno) << "\n";
@@ -108,11 +111,11 @@ int runProgram(const std::vector<std::string>& command,
   } else if (child == 0) {
 
     // build the parameters
-    const char **argv = new const char*[command.size() + 1];
+    std::unique_ptr<const char*> argv(new const char*[command.size() + 1]);
     for(uint64_t i=0; i < command.size(); ++i) {
-      argv[i] = command[i].c_str();
+      argv.get()[i] = command[i].c_str();
     }
-    argv[command.size()] = 0;
+    argv.get()[command.size()] = 0;
 
     // do the stdout & stderr redirection
     int stdoutFd = open(stdoutName, O_WRONLY | O_CREAT | O_TRUNC, 0644);
@@ -139,7 +142,7 @@ int runProgram(const std::vector<std::string>& command,
     close(stderrFd);
 
     // run the program
-    execvp(argv[0], const_cast<char * const *>(argv));
+    execvp(argv.get()[0], const_cast<char * const *>(argv.get()));
 
     // can only reach here if the exec fails
     std::cerr << "Can't run -";