You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2016/11/04 21:59:34 UTC

[2/2] mesos git commit: Fixed memory leak in JVM code.

Fixed memory leak in JVM code.

Review: https://reviews.apache.org/r/53386/


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

Branch: refs/heads/master
Commit: 5974fc3e2d3a3ef0d1397259a2fee22f2c25cc4b
Parents: 55cb3cb
Author: Neil Conway <ne...@gmail.com>
Authored: Fri Nov 4 14:24:52 2016 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Nov 4 14:59:20 2016 -0700

----------------------------------------------------------------------
 src/jvm/jvm.cpp | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/5974fc3e/src/jvm/jvm.cpp
----------------------------------------------------------------------
diff --git a/src/jvm/jvm.cpp b/src/jvm/jvm.cpp
index 62f7857..58bbb94 100644
--- a/src/jvm/jvm.cpp
+++ b/src/jvm/jvm.cpp
@@ -65,13 +65,6 @@ Try<Jvm*> Jvm::create(
   }
 #endif
 
-  JavaVMOption* opts = new JavaVMOption[options.size()];
-  for (size_t i = 0; i < options.size(); i++) {
-    opts[i].optionString = const_cast<char*>(options[i].c_str());
-  }
-  vmArgs.nOptions = options.size();
-  vmArgs.options = opts;
-
   JavaVM* jvm = nullptr;
   JNIEnv* env = nullptr;
   Option<std::string> libJvmPath = os::getenv("JAVA_JVM_LIBRARY");
@@ -94,6 +87,16 @@ Try<Jvm*> Jvm::create(
     return Error(symbol.error());
   }
 
+  std::vector<JavaVMOption> opts(options.size());
+  for (size_t i = 0; i < options.size(); i++) {
+    opts[i].optionString = const_cast<char*>(options[i].c_str());
+  }
+
+  vmArgs.nOptions = opts.size();
+  if (!opts.empty()) {
+    vmArgs.options = &opts[0];
+  }
+
   // typedef function pointer to JNI.
   typedef jint (*fnptr_JNI_CreateJavaVM)(JavaVM**, void**, void*);
 
@@ -107,8 +110,6 @@ Try<Jvm*> Jvm::create(
     return Error("Failed to create JVM!");
   }
 
-  delete[] opts;
-
   return instance = new Jvm(jvm, version, exceptions);
 }