From 0370913bfc737fd3ef0c0beb303727293b2c492f Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Wed, 11 Apr 2012 08:06:29 -0700 Subject: [PATCH] fix memory leak of pj_ctx if a projection cannot be initialized --- src/projection.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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; }