aboutsummaryrefslogtreecommitdiff
path: root/src/gen_cheb.c
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-05-29 22:45:18 +0200
committerEven Rouault <even.rouault@spatialys.com>2018-05-30 11:48:28 +0200
commitf773897a3025438326c1131e1586d9ddae080c4f (patch)
tree989e9619ac1f1ad140298bef5327df3f2d417d92 /src/gen_cheb.c
parente692e1567fb6117bd3e1380a80e10b72b7af3710 (diff)
downloadPROJ-f773897a3025438326c1131e1586d9ddae080c4f.tar.gz
PROJ-f773897a3025438326c1131e1586d9ddae080c4f.zip
Fix warnings found by clang with new warning flags to be added in later commit
Fixes consist in: - no use of comma operator for multi statement purpose - avoid confusing comma in for loops first and third clauses - avoid implicit long to int casts by storing to long, or explicit bound checking before cast
Diffstat (limited to 'src/gen_cheb.c')
-rw-r--r--src/gen_cheb.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gen_cheb.c b/src/gen_cheb.c
index 351d9604..ab16b409 100644
--- a/src/gen_cheb.c
+++ b/src/gen_cheb.c
@@ -16,8 +16,10 @@ extern void p_series(Tseries *, FILE *, char *);
void gen_cheb(int inverse, projUV (*proj)(projUV), char *s, PJ *P,
int iargc, char **iargv) {
- int NU = 15, NV = 15, res = -1, errin = 0, pwr;
- char *arg, fmt[15];
+ long NU = 15, NV = 15;
+ int errin = 0, pwr;
+ long res = -1;
+ char *arg, fmt[32];
projUV low, upp, resid;
Tseries *F;
double (*input)(const char *, char **);
@@ -54,10 +56,10 @@ void gen_cheb(int inverse, projUV (*proj)(projUV), char *s, PJ *P,
emess(16,"approx. argument range error");
if (low.u > upp.u)
low.u -= M_TWOPI;
- if (NU < 2 || NV < 2)
- emess(16,"approx. work dimensions (%d %d) too small",NU,NV);
+ if (NU < 2 || NV < 2 || NU > INT_MAX || NV > INT_MAX)
+ emess(16,"approx. work dimensions (%ld %ld) too small or large",NU,NV);
if (!(F = mk_cheby(low, upp, pow(10., (double)res)*.5, &resid, proj,
- NU, NV, pwr)))
+ (int)NU, (int)NV, pwr)))
emess(16,"generation of approx failed\nreason: %s\n",
pj_strerrno(errno));
(void)printf("%c,%.12g,%.12g,%.12g,%.12g,%.12g\n",inverse?'I':'F',
@@ -67,7 +69,7 @@ void gen_cheb(int inverse, projUV (*proj)(projUV), char *s, PJ *P,
if (pwr)
strcpy(fmt, "%.15g");
else if (res <= 0)
- (void)sprintf(fmt,"%%.%df",-res+1);
+ (void)sprintf(fmt,"%%.%ldf",-res+1);
else
(void)strcpy(fmt,"%.0f");
p_series(F, stdout, fmt);