aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2018-04-25 23:52:22 +0200
committerGitHub <noreply@github.com>2018-04-25 23:52:22 +0200
commitfdf8f02538bff49ed5b986c26aed68da335f09c8 (patch)
tree7b6b030d8c782e17ebf7de4a99802487882488dc /src
parent968fcad7ae5064e733978f47d5e93a9baf6a5c46 (diff)
parent0dc275a312c1b2ddefc066c66787eb8274d60f08 (diff)
downloadPROJ-fdf8f02538bff49ed5b986c26aed68da335f09c8.tar.gz
PROJ-fdf8f02538bff49ed5b986c26aed68da335f09c8.zip
Merge pull request #955 from rouault/fix_pj_transform_multiple_transforms
pj_transform: reset error state before each call to pj_inv/pj_fwd
Diffstat (limited to 'src')
-rw-r--r--src/pj_transform.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pj_transform.c b/src/pj_transform.c
index 22b685b2..aaa8c1e4 100644
--- a/src/pj_transform.c
+++ b/src/pj_transform.c
@@ -42,6 +42,8 @@ enum PJ_DIRECTION {
};
typedef enum PJ_DIRECTION PJ_DIRECTION;
+/* Copied from proj.h FIXME */
+int proj_errno_reset (const PJ *P);
static int adjust_axis( projCtx ctx, const char *axis, int denormalize_flag,
@@ -199,6 +201,7 @@ static int geographic_to_projected (PJ *P, long n, int dist, double *x, double *
if (geodetic_loc.u == HUGE_VAL)
continue;
+ proj_errno_reset( P );
projected_loc = pj_fwd3d( geodetic_loc, P);
if( P->ctx->last_errno != 0 )
{
@@ -234,6 +237,7 @@ static int geographic_to_projected (PJ *P, long n, int dist, double *x, double *
if( geodetic_loc.u == HUGE_VAL )
continue;
+ proj_errno_reset( P );
projected_loc = pj_fwd( geodetic_loc, P );
if( P->ctx->last_errno != 0 )
{
@@ -301,6 +305,7 @@ static int projected_to_geographic (PJ *P, long n, int dist, double *x, double *
if (projected_loc.u == HUGE_VAL)
continue;
+ proj_errno_reset( P );
geodetic_loc = pj_inv3d(projected_loc, P);
if( P->ctx->last_errno != 0 )
{
@@ -337,6 +342,7 @@ static int projected_to_geographic (PJ *P, long n, int dist, double *x, double *
if( projected_loc.u == HUGE_VAL )
continue;
+ proj_errno_reset( P );
geodetic_loc = pj_inv( projected_loc, P );
if( P->ctx->last_errno != 0 )
{