aboutsummaryrefslogtreecommitdiff
path: root/src/biveval.c
diff options
context:
space:
mode:
authorFrank Warmerdam <warmerdam@pobox.com>2009-01-23 15:04:48 +0000
committerFrank Warmerdam <warmerdam@pobox.com>2009-01-23 15:04:48 +0000
commit3e1894a311c8f604802559779b285dd44e6a6e3f (patch)
tree60f455da5be799ee6451ac5a7b0ed9cc43810669 /src/biveval.c
parent9491279ef52c951148e903f54dc21445cbcfa74c (diff)
downloadPROJ-3e1894a311c8f604802559779b285dd44e6a6e3f.tar.gz
PROJ-3e1894a311c8f604802559779b285dd44e6a6e3f.zip
avoid use of static variables which interfere with reentrancy (#24)
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1511 4e78687f-474d-0410-85f9-8d5e500ac6b2
Diffstat (limited to 'src/biveval.c')
-rw-r--r--src/biveval.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/biveval.c b/src/biveval.c
index c0586cc7..d0f0e743 100644
--- a/src/biveval.c
+++ b/src/biveval.c
@@ -4,9 +4,7 @@ static const char SCCSID[]="@(#)biveval.c 4.4 93/06/12 GIE REL";
#endif
# include <projects.h>
# define NEAR_ONE 1.00001
- static projUV
-w2, w;
-static double ceval(struct PW_COEF *C, int n) {
+static double ceval(struct PW_COEF *C, int n, projUV w, projUV w2) {
double d=0, dd=0, vd, vdd, tmp, *c;
int j;
@@ -34,6 +32,7 @@ static double ceval(struct PW_COEF *C, int n) {
}
projUV /* bivariate Chebyshev polynomial entry point */
bcheval(projUV in, Tseries *T) {
+ projUV w2, w;
projUV out;
/* scale to +-1 */
w.u = ( in.u + in.u - T->a.u ) * T->b.u;
@@ -44,8 +43,8 @@ bcheval(projUV in, Tseries *T) {
} else { /* double evaluation */
w2.u = w.u + w.u;
w2.v = w.v + w.v;
- out.u = ceval(T->cu, T->mu);
- out.v = ceval(T->cv, T->mv);
+ out.u = ceval(T->cu, T->mu, w, w2);
+ out.v = ceval(T->cv, T->mv, w, w2);
}
return out;
}