diff --git a/src/projection.cpp b/src/projection.cpp index c6a74f32a..4bfc7414f 100644 --- a/src/projection.cpp +++ b/src/projection.cpp @@ -135,12 +135,17 @@ void projection::init() mutex::scoped_lock lock(mutex_); #endif #if PJ_VERSION >= 480 - proj_ctx_=pj_ctx_alloc(); - proj_=pj_init_plus_ctx(proj_ctx_, params_.c_str()); + proj_ctx_ = pj_ctx_alloc(); + proj_ = pj_init_plus_ctx(proj_ctx_, params_.c_str()); + if (!proj_) + { + if (proj_ctx_) pj_ctx_free(proj_ctx_); + throw proj_init_error(params_); + } #else - proj_=pj_init_plus(params_.c_str()); -#endif + proj_ = pj_init_plus(params_.c_str()); if (!proj_) throw proj_init_error(params_); +#endif is_geographic_ = pj_is_latlong(proj_) ? true : false; }