Mercurial > octave
diff liboctave/util/oct-shlib.cc @ 30749:076e19eac74a stable
allow deletion of dynamic_library objects to be delayed
* oct-shlib.h, oct-shlib.cc (dynamic_library::delete_later):
New function.
(possibly_unreferenced_dynamic_libraries): New static object.
(release_unreferenced_dynamic_libraries): New function.
* interpreter.cc (interpreter::main_loop):
Add release_unreferenced_dynamic_libraries as new event_hook.
* pt-eval.cc (debugger::server_loop, tree_evaluator::server_loop):
Also call release_unreferenced_dynamic_libraries in event loop.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 17 Feb 2022 22:21:03 -0500 |
parents | bfff3d523690 |
children | e88a07dec498 |
line wrap: on
line diff
--- a/liboctave/util/oct-shlib.cc Thu Feb 17 22:19:11 2022 -0500 +++ b/liboctave/util/oct-shlib.cc Thu Feb 17 22:21:03 2022 -0500 @@ -27,6 +27,7 @@ # include "config.h" #endif +#include <list> #include <map> extern "C" @@ -59,6 +60,20 @@ namespace octave { + std::list<dynamic_library> possibly_unreferenced_dynamic_libraries; + + void dynamic_library::delete_later (void) + { + possibly_unreferenced_dynamic_libraries.push_back (*this); + } + + int release_unreferenced_dynamic_libraries (void) + { + possibly_unreferenced_dynamic_libraries.clear (); + + return 0; + } + dynamic_library::dynlib_rep::dynlib_rep (const std::string& f) : m_count (1), m_fcn_names (), m_file (f), m_time_loaded (), m_search_all_loaded (false)