From 244a24104ded3a4573aeffa32160af21f76cbce6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 00:51:46 +0100 Subject: Revise error codes to have a reduced set exposed in the public API. Fixes #2482 And also add proj_context_errno_string() Revise gie 'expect failure errno XXXX' strings --- src/projections/eqdc.cpp | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'src/projections/eqdc.cpp') diff --git a/src/projections/eqdc.cpp b/src/projections/eqdc.cpp index 28767d74..4f49c136 100644 --- a/src/projections/eqdc.cpp +++ b/src/projections/eqdc.cpp @@ -79,20 +79,32 @@ PJ *PROJECTION(eqdc) { struct pj_opaque *Q = static_cast(calloc (1, sizeof (struct pj_opaque))); if (nullptr==Q) - return pj_default_destructor (P, ENOMEM); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP /*ENOMEM*/); P->opaque = Q; P->destructor = destructor; Q->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; Q->phi2 = pj_param(P->ctx, P->params, "rlat_2").f; - if (fabs(Q->phi1) > M_HALFPI || fabs(Q->phi2) > M_HALFPI) - return destructor(P, PJD_ERR_LAT_LARGER_THAN_90); + if (fabs(Q->phi1) > M_HALFPI) + { + proj_log_error(P, _("Invalid value for lat_1: |lat_1| should be <= 90°")); + return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } + + if (fabs(Q->phi2) > M_HALFPI) + { + proj_log_error(P, _("Invalid value for lat_2: |lat_2| should be <= 90°")); + return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } if (fabs(Q->phi1 + Q->phi2) < EPS10) - return destructor (P, PJD_ERR_CONIC_LAT_EQUAL); + { + proj_log_error(P, _("Invalid value for lat_1 and lat_2: |lat_1 + lat_2| should be > 0")); + return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } if (!(Q->en = pj_enfn(P->es))) - return destructor(P, ENOMEM); + return destructor(P, PROJ_ERR_INVALID_OP /*ENOMEM*/); sinphi = sin(Q->phi1); Q->n = sinphi; @@ -111,7 +123,8 @@ PJ *PROJECTION(eqdc) { (pj_mlfn(Q->phi2, sinphi, cosphi, Q->en) - ml1); if (Q->n == 0) { // Not quite, but es is very close to 1... - return destructor(P, PJD_ERR_INVALID_ECCENTRICITY); + proj_log_error(P, _("Invalid value for eccentricity")); + return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } } Q->c = ml1 + m1 / Q->n; @@ -121,7 +134,10 @@ PJ *PROJECTION(eqdc) { if (secant) Q->n = (cosphi - cos(Q->phi2)) / (Q->phi2 - Q->phi1); if (Q->n == 0) - return destructor (P, PJD_ERR_CONIC_LAT_EQUAL); + { + proj_log_error(P, _("Invalid value for lat_1 and lat_2: lat_1 + lat_2 should be > 0")); + return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } Q->c = Q->phi1 + cos(Q->phi1) / Q->n; Q->rho0 = Q->c - P->phi0; } -- cgit v1.2.3 From a27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 17:53:29 +0100 Subject: Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER --- src/projections/eqdc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/projections/eqdc.cpp') diff --git a/src/projections/eqdc.cpp b/src/projections/eqdc.cpp index 4f49c136..4407ab62 100644 --- a/src/projections/eqdc.cpp +++ b/src/projections/eqdc.cpp @@ -79,7 +79,7 @@ PJ *PROJECTION(eqdc) { struct pj_opaque *Q = static_cast(calloc (1, sizeof (struct pj_opaque))); if (nullptr==Q) - return pj_default_destructor (P, PROJ_ERR_INVALID_OP /*ENOMEM*/); + return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/); P->opaque = Q; P->destructor = destructor; @@ -104,7 +104,7 @@ PJ *PROJECTION(eqdc) { } if (!(Q->en = pj_enfn(P->es))) - return destructor(P, PROJ_ERR_INVALID_OP /*ENOMEM*/); + return destructor(P, PROJ_ERR_OTHER /*ENOMEM*/); sinphi = sin(Q->phi1); Q->n = sinphi; -- cgit v1.2.3