diff options
| -rw-r--r-- | include/proj/internal/io_internal.hpp | 2 | ||||
| -rw-r--r-- | src/malloc.cpp | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/proj/internal/io_internal.hpp b/include/proj/internal/io_internal.hpp index a57ca5ce..e0426b59 100644 --- a/include/proj/internal/io_internal.hpp +++ b/include/proj/internal/io_internal.hpp @@ -201,6 +201,8 @@ struct projCppContext { } NS_PROJ::io::DatabaseContextNNPtr getDatabaseContext(); + + void closeDb() { databaseContext_ = nullptr; } }; //! @endcond diff --git a/src/malloc.cpp b/src/malloc.cpp index 4727f478..d60a3f92 100644 --- a/src/malloc.cpp +++ b/src/malloc.cpp @@ -33,6 +33,9 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. *****************************************************************************/ +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif /* allocate and deallocate memory */ /* These routines are used so that applications can readily replace @@ -46,6 +49,8 @@ #include <new> +#include "proj/internal/io_internal.hpp" + #include "proj.h" #include "proj_internal.h" #include "grids.hpp" @@ -176,6 +181,13 @@ PJ *pj_default_destructor (PJ *P, int errlev) { /* Destructor */ /*****************************************************************************/ void proj_cleanup() { /*****************************************************************************/ + + // Close the database context of the default PJ_CONTEXT + auto cpp_context = pj_get_default_ctx()->cpp_context; + if( cpp_context ) { + cpp_context->closeDb(); + } + pj_clear_initcache(); FileManager::clearMemoryCache(); pj_clear_hgridshift_knowngrids_cache(); |
