Mercurial > octave
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); }