aboutsummaryrefslogtreecommitdiff
path: root/src/projections/oea.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-12-16 15:12:51 +0100
committerGitHub <noreply@github.com>2020-12-16 15:12:51 +0100
commit5e077729274f5d28e137e1a41f7d3350146614ef (patch)
treed1ef799526f06828328b58ce8ee92c028f723b6a /src/projections/oea.cpp
parent8b1ef9504d0bcfbd8433df943e307bbd1aa30c4f (diff)
parenta27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80 (diff)
downloadPROJ-5e077729274f5d28e137e1a41f7d3350146614ef.tar.gz
PROJ-5e077729274f5d28e137e1a41f7d3350146614ef.zip
Merge pull request #2487 from rouault/error_mgt_improvements
Error management: revise error codes and expose them to the public API
Diffstat (limited to 'src/projections/oea.cpp')
-rw-r--r--src/projections/oea.cpp41
1 files changed, 24 insertions, 17 deletions
diff --git a/src/projections/oea.cpp b/src/projections/oea.cpp
index 46c00d16..2f13ae98 100644
--- a/src/projections/oea.cpp
+++ b/src/projections/oea.cpp
@@ -60,27 +60,34 @@ static PJ_LP oea_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse
PJ *PROJECTION(oea) {
struct pj_opaque *Q = static_cast<struct pj_opaque*>(calloc (1, sizeof (struct pj_opaque)));
if (nullptr==Q)
- return pj_default_destructor (P, ENOMEM);
+ return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/);
P->opaque = Q;
- if (((Q->n = pj_param(P->ctx, P->params, "dn").f) <= 0.) ||
- ((Q->m = pj_param(P->ctx, P->params, "dm").f) <= 0.)) {
- return pj_default_destructor(P, PJD_ERR_INVALID_M_OR_N);
- } else {
- Q->theta = pj_param(P->ctx, P->params, "rtheta").f;
- Q->sp0 = sin(P->phi0);
- Q->cp0 = cos(P->phi0);
- Q->rn = 1./ Q->n;
- Q->rm = 1./ Q->m;
- Q->two_r_n = 2. * Q->rn;
- Q->two_r_m = 2. * Q->rm;
- Q->hm = 0.5 * Q->m;
- Q->hn = 0.5 * Q->n;
- P->fwd = oea_s_forward;
- P->inv = oea_s_inverse;
- P->es = 0.;
+ if (((Q->n = pj_param(P->ctx, P->params, "dn").f) <= 0.) )
+ {
+ proj_log_error(P, _("Invalid value for n: it should be > 0"));
+ return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
}
+ if (((Q->m = pj_param(P->ctx, P->params, "dm").f) <= 0.) )
+ {
+ proj_log_error(P, _("Invalid value for m: it should be > 0"));
+ return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ }
+
+ Q->theta = pj_param(P->ctx, P->params, "rtheta").f;
+ Q->sp0 = sin(P->phi0);
+ Q->cp0 = cos(P->phi0);
+ Q->rn = 1./ Q->n;
+ Q->rm = 1./ Q->m;
+ Q->two_r_n = 2. * Q->rn;
+ Q->two_r_m = 2. * Q->rm;
+ Q->hm = 0.5 * Q->m;
+ Q->hn = 0.5 * Q->n;
+ P->fwd = oea_s_forward;
+ P->inv = oea_s_inverse;
+ P->es = 0.;
+
return P;
}