From 8fef2126f1c9fa17b79e6669f4457c299c0e33bf Mon Sep 17 00:00:00 2001 From: Kristian Evers Date: Sun, 6 May 2018 17:40:44 +0300 Subject: Handle HUGE_VAL input better in fwd and inv functions --- src/pj_fwd.c | 5 +++-- src/pj_inv.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pj_fwd.c b/src/pj_fwd.c index 347f8334..4b6cfc58 100644 --- a/src/pj_fwd.c +++ b/src/pj_fwd.c @@ -30,6 +30,7 @@ #include #include "proj_internal.h" +#include "proj_math.h" #include "projects.h" #define INPUT_UNITS P->left @@ -37,7 +38,7 @@ static PJ_COORD fwd_prepare (PJ *P, PJ_COORD coo) { - if (HUGE_VAL==coo.v[0]) + if (HUGE_VAL==coo.v[0] || HUGE_VAL==coo.v[1] || HUGE_VAL==coo.v[2]) return proj_coord_error (); /* The helmert datum shift will choke unless it gets a sensible 4D coordinate */ @@ -191,7 +192,7 @@ XY pj_fwd(LP lp, PJ *P) { if (!P->skip_fwd_prepare) coo = fwd_prepare (P, coo); - if (HUGE_VAL==coo.v[0]) + if (HUGE_VAL==coo.v[0] || HUGE_VAL==coo.v[1]) return proj_coord_error ().xy; /* Do the transformation, using the lowest dimensional transformer available */ diff --git a/src/pj_inv.c b/src/pj_inv.c index 327fef9f..25d416c0 100644 --- a/src/pj_inv.c +++ b/src/pj_inv.c @@ -30,13 +30,14 @@ #include #include "proj_internal.h" +#include "proj_math.h" #include "projects.h" #define INPUT_UNITS P->right #define OUTPUT_UNITS P->left static PJ_COORD inv_prepare (PJ *P, PJ_COORD coo) { - if (coo.xyz.x == HUGE_VAL) { + if (coo.v[0] == HUGE_VAL || coo.v[1] == HUGE_VAL || coo.v[2] == HUGE_VAL) { proj_errno_set (P, PJD_ERR_INVALID_X_OR_Y); return proj_coord_error (); } -- cgit v1.2.3