aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-08-26 23:21:12 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-08-26 23:21:12 +0200
commit96ac0f210b6dd3fdb499115d83bc13ff7739cd60 (patch)
tree976815754bd15dabb80311f5f6da4a9da0cf88dc /src
parent10a30bb539be1afb25952b19af8bbe72e1b13b56 (diff)
downloadPROJ-96ac0f210b6dd3fdb499115d83bc13ff7739cd60.tar.gz
PROJ-96ac0f210b6dd3fdb499115d83bc13ff7739cd60.zip
Add a proj_cleanup() function to free global resources, typically at process termination
Diffstat (limited to 'src')
-rw-r--r--src/apps/cs2cs.cpp2
-rw-r--r--src/malloc.cpp7
-rw-r--r--src/proj.h2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/apps/cs2cs.cpp b/src/apps/cs2cs.cpp
index 20e5e73c..3099c3e8 100644
--- a/src/apps/cs2cs.cpp
+++ b/src/apps/cs2cs.cpp
@@ -645,7 +645,7 @@ int main(int argc, char **argv) {
proj_destroy(transformation);
- pj_deallocate_grids();
+ proj_cleanup();
exit(0); /* normal completion */
}
diff --git a/src/malloc.cpp b/src/malloc.cpp
index 817f8f20..393437e3 100644
--- a/src/malloc.cpp
+++ b/src/malloc.cpp
@@ -255,3 +255,10 @@ PJ *pj_default_destructor (PJ *P, int errlev) { /* Destructor */
delete P;
return nullptr;
}
+
+/*****************************************************************************/
+void proj_cleanup() {
+/*****************************************************************************/
+ pj_clear_initcache();
+ pj_deallocate_grids();
+}
diff --git a/src/proj.h b/src/proj.h
index 9cf83df7..e5e9df4c 100644
--- a/src/proj.h
+++ b/src/proj.h
@@ -458,6 +458,8 @@ double PROJ_DLL proj_todeg (double angle_in_radians);
double PROJ_DLL proj_dmstor(const char *is, char **rs);
char PROJ_DLL * proj_rtodms(char *s, double r, int pos, int neg);
+void PROJ_DLL proj_cleanup(void);
+
/*! @endcond */
/* ------------------------------------------------------------------------- */