aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ctx.cpp7
-rw-r--r--src/iso19111/c_api.cpp12
2 files changed, 19 insertions, 0 deletions
diff --git a/src/ctx.cpp b/src/ctx.cpp
index 1e97e58a..930ae9ea 100644
--- a/src/ctx.cpp
+++ b/src/ctx.cpp
@@ -24,6 +24,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
#include <errno.h>
#include <stdlib.h>
@@ -34,6 +37,7 @@
#include "proj_experimental.h"
#include "proj_internal.h"
#include "filemanager.hpp"
+#include "proj/internal/io_internal.hpp"
/************************************************************************/
/* pj_get_ctx() */
@@ -152,6 +156,9 @@ projCtx_t::projCtx_t(const projCtx_t& other)
file_finder_user_data = other.file_finder_user_data;
networking = other.networking;
ca_bundle_path = other.ca_bundle_path;
+ if (other.cpp_context != nullptr) {
+ cpp_context = other.cpp_context->clone(this);
+ }
}
/************************************************************************/
diff --git a/src/iso19111/c_api.cpp b/src/iso19111/c_api.cpp
index 9219f767..947be058 100644
--- a/src/iso19111/c_api.cpp
+++ b/src/iso19111/c_api.cpp
@@ -125,6 +125,18 @@ projCppContext::toVector(const char *const *auxDbPaths) {
// ---------------------------------------------------------------------------
+projCppContext* projCppContext::clone(PJ_CONTEXT *ctx) const {
+ projCppContext* newContext = new projCppContext(
+ ctx,
+ getDbPath().c_str(),
+ getAuxDbPaths()
+ );
+ newContext->setAutoCloseDb(getAutoCloseDb());
+ return newContext;
+}
+
+// ---------------------------------------------------------------------------
+
void projCppContext::closeDb() { databaseContext_ = nullptr; }
// ---------------------------------------------------------------------------