diff options
Diffstat (limited to 'src/PJ_isea.c')
| -rw-r--r-- | src/PJ_isea.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/src/PJ_isea.c b/src/PJ_isea.c index deaecb0f..223d8f28 100644 --- a/src/PJ_isea.c +++ b/src/PJ_isea.c @@ -1034,6 +1034,7 @@ isea_forward(struct isea_dgg *g, struct isea_geo *in) */ #define PJ_LIB__ +#include <errno.h> #include <proj.h> #include "projects.h" @@ -1062,27 +1063,11 @@ static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */ } -static void *freeup_new (PJ *P) { /* Destructor */ - if (0==P) - return 0; - if (0==P->opaque) - return pj_dealloc (P); - - pj_dealloc (P->opaque); - return pj_dealloc(P); -} - -static void freeup (PJ *P) { - freeup_new (P); - return; -} - - PJ *PROJECTION(isea) { char *opt; struct pj_opaque *Q = pj_calloc (1, sizeof (struct pj_opaque)); if (0==Q) - return freeup_new (P); + return pj_default_destructor (P, ENOMEM); P->opaque = Q; @@ -1100,8 +1085,7 @@ PJ *PROJECTION(isea) { } else if (!strcmp(opt, "pole")) { isea_orient_pole(&Q->dgg); } else { - proj_errno_set(P, PJD_ERR_ELLIPSOID_USE_REQUIRED); - return freeup_new(P); + return pj_default_destructor(P, PJD_ERR_ELLIPSOID_USE_REQUIRED); } } @@ -1140,8 +1124,7 @@ PJ *PROJECTION(isea) { } else { /* TODO verify error code. Possibly eliminate magic */ - proj_errno_set(P, PJD_ERR_ELLIPSOID_USE_REQUIRED); - return freeup_new(P); + return pj_default_destructor(P, PJD_ERR_ELLIPSOID_USE_REQUIRED); } } |
