src/hotspot/os/solaris/os_perf_solaris.cpp
changeset 51106 f605c91e5219
parent 50879 d90c3cbf13df
child 51366 292a9d391a20
--- a/src/hotspot/os/solaris/os_perf_solaris.cpp	Tue Jul 17 12:03:10 2018 -0700
+++ b/src/hotspot/os/solaris/os_perf_solaris.cpp	Tue Jul 17 15:59:47 2018 -0400
@@ -604,15 +604,14 @@
 }
 
 int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
-  struct dirent* entry;
-
   if (!is_valid()) {
     return OS_ERR;
   }
 
   do {
-    if ((entry = os::readdir(_dir, _entry)) == NULL) {
-      // error
+    _entry = os::readdir(_dir);
+    if (_entry == NULL) {
+      // Error or reached end.  Could use errno to distinguish those cases.
       _valid = false;
       return OS_ERR;
     }
@@ -629,11 +628,8 @@
 }
 
 bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
-  _dir = opendir("/proc");
-  _entry = (struct dirent*)NEW_C_HEAP_ARRAY(char, sizeof(struct dirent) + _PC_NAME_MAX + 1, mtInternal);
-  if (NULL == _entry) {
-    return false;
-  }
+  _dir = os::opendir("/proc");
+  _entry = NULL;
   _valid = true;
   next_process();
 
@@ -641,12 +637,8 @@
 }
 
 SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
-  if (_entry != NULL) {
-    FREE_C_HEAP_ARRAY(char, _entry);
-  }
-
   if (_dir != NULL) {
-    closedir(_dir);
+    os::closedir(_dir);
   }
 }