diff liboctave/util/oct-shlib.cc @ 23554:b075b1629c26

don't use hook function in dynamic_library::dynlib_rep::close function * oct-shlib.h, oct-shlib.cc (dynamic_library::dynlib_rep::function_names): New function. (dynamic_library::dynlib_rep::clear_fcn_names)): New function. (dynamic_library::dynlib_rep::do_close_hook): Delete. (dynamic_library::close): Return list of function names instead of calling close_hook function on each function name. * dynamic-ld.h, dynamic-ld.cc (dynamic_loader::shlibs_list::remove): Return list of removed functions instead of passing close_hook function to the shared-library close function. (dynamic_loader::do_clear): Clear functions removed from dynamically loaded library here.
author John W. Eaton <jwe@octave.org>
date Fri, 02 Jun 2017 09:16:02 -0400
parents 21baad6b35c4
children 08036a7f3660
line wrap: on
line diff
--- a/liboctave/util/oct-shlib.cc	Wed Jun 07 02:13:05 2017 -0400
+++ b/liboctave/util/oct-shlib.cc	Fri Jun 02 09:16:02 2017 -0400
@@ -114,6 +114,17 @@
     return retval;
   }
 
+  std::list<std::string>
+  dynamic_library::dynlib_rep::function_names (void) const
+  {
+    std::list<std::string> retval;
+
+    for (const auto& p : fcn_names)
+      retval.push_back (p.first);
+
+    return retval;
+  }
+
   void
   dynamic_library::dynlib_rep::add_fcn_name (const std::string& name)
   {
@@ -141,15 +152,6 @@
     return retval;
   }
 
-  void
-  dynamic_library::dynlib_rep::do_close_hook (dynamic_library::close_hook cl_hook)
-  {
-    for (auto& fcn_sz : fcn_names)
-      cl_hook (fcn_sz.first);
-
-    fcn_names.clear ();
-  }
-
   std::map<std::string, dynamic_library::dynlib_rep *>
     dynamic_library::dynlib_rep::instances;
 
@@ -435,7 +437,7 @@
     void * search (const std::string& name,
                    dynamic_library::name_mangler mangler = 0);
 
-    void close (dynamic_library::close_hook cl_hook = 0);
+    void close (void);
 
     bool is_open (void) const {return (handle != 0); }