diff options
| -rw-r--r-- | src/PJ_ob_tran.c | 15 | ||||
| -rw-r--r-- | src/multistresstest.c | 2 | ||||
| -rw-r--r-- | src/pj_malloc.c | 1 | ||||
| -rw-r--r-- | src/test228.c | 2 | ||||
| -rwxr-xr-x | travis/linux_clang/install.sh | 2 |
5 files changed, 13 insertions, 9 deletions
diff --git a/src/PJ_ob_tran.c b/src/PJ_ob_tran.c index 793ace38..cd6f72db 100644 --- a/src/PJ_ob_tran.c +++ b/src/PJ_ob_tran.c @@ -84,13 +84,12 @@ static LP t_inverse(XY xy, PJ *P) { /* spheroid */ static void *destructor(PJ *P, int errlev) { if (0==P) return 0; - if (0==P->opaque) return pj_default_destructor (P, errlev); - + if (P->opaque->link) P->opaque->link->destructor (P->opaque->link, errlev); - + return pj_default_destructor(P, errlev); } @@ -166,12 +165,14 @@ PJ *PROJECTION(ob_tran) { struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); if (0==Q) - return pj_default_destructor(P, ENOMEM); - P->opaque = Q; + return destructor(P, ENOMEM); - if (0 != P->es) - return pj_default_destructor(P, PJD_ERR_ELLIPSOIDAL_UNSUPPORTED); + P->opaque = Q; + P->destructor = destructor; + if (0 != P->es) + return destructor(P, PJD_ERR_ELLIPSOIDAL_UNSUPPORTED); + /* get name of projection to be translated */ if (!(name = pj_param(P->ctx, P->params, "so_proj").s)) return destructor(P, PJD_ERR_NO_ROTATION_PROJ); diff --git a/src/multistresstest.c b/src/multistresstest.c index 8fb764e2..ddbbb033 100644 --- a/src/multistresstest.c +++ b/src/multistresstest.c @@ -363,6 +363,7 @@ static int do_main(void) { printf( "Unable to translate:\n%s\n", test->src_def ); test->skip = 1; + pj_free (dst_pj); continue; } @@ -370,6 +371,7 @@ static int do_main(void) { printf( "Unable to translate:\n%s\n", test->dst_def ); test->skip = 1; + pj_free (src_pj); continue; } diff --git a/src/pj_malloc.c b/src/pj_malloc.c index 9c69257f..75d05378 100644 --- a/src/pj_malloc.c +++ b/src/pj_malloc.c @@ -161,7 +161,6 @@ void *pj_default_destructor (PJ *P, int errlev) { /* Destructor */ if (0==P) return 0; - /* free grid lists */ pj_dealloc( P->gridlist ); pj_dealloc( P->vgridlist_geoid ); diff --git a/src/test228.c b/src/test228.c index 1f3d04e8..94f0ec08 100644 --- a/src/test228.c +++ b/src/test228.c @@ -54,6 +54,8 @@ static void* thread_main(void* unused) assert(fabs(y - 49.999396034285531698) < 1e-15); } + pj_free (p_OSGB36_proj); + pj_free (p_WGS84_proj); return NULL; } diff --git a/travis/linux_clang/install.sh b/travis/linux_clang/install.sh index 56e16ce6..a0dd9353 100755 --- a/travis/linux_clang/install.sh +++ b/travis/linux_clang/install.sh @@ -4,4 +4,4 @@ set -e export CCACHE_CPP2=yes -CC="ccache clang" CFLAGS="-g -Wall -Wextra -Werror -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Werror=format-security -Wshadow -Wfloat-conversion -O2" ./travis/install.sh +CC="ccache clang" CFLAGS="-g -Wall -Wextra -Werror -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Werror=format-security -Wshadow -Wfloat-conversion -fsanitize=address -O2" ./travis/install.sh |
