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 -";