mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
fix for bug #8112, sr=brendan, r=beard
This commit is contained in:
parent
6537de8f6d
commit
9d02c9eb11
@ -117,10 +117,10 @@ static double zero = 0.0; /* used as const */
|
||||
|
||||
|
||||
#ifdef __STDC__
|
||||
double __kernel_standard(double x, double y, int type)
|
||||
double __kernel_standard(double x, double y, int type, int *err)
|
||||
#else
|
||||
double __kernel_standard(x,y,type)
|
||||
double x,y; int type;
|
||||
double __kernel_standard(x,y,type, err)
|
||||
double x,y; int type;int *err;
|
||||
#endif
|
||||
{
|
||||
struct exception exc;
|
||||
@ -134,6 +134,8 @@ static double zero = 0.0; /* used as const */
|
||||
inf = u.d;
|
||||
#endif
|
||||
|
||||
*err = 0;
|
||||
|
||||
#ifdef _USE_WRITE
|
||||
(void) fflush(stdout);
|
||||
#endif
|
||||
@ -146,12 +148,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "acos";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if(_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("acos: DOMAIN error\n", 19);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@ -160,12 +162,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "asin";
|
||||
exc.retval = zero;
|
||||
if(_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if(_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("asin: DOMAIN error\n", 19);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
@ -176,12 +178,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "atan2";
|
||||
exc.retval = zero;
|
||||
if(_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if(_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("atan2: DOMAIN error\n", 20);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
@ -193,9 +195,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
@ -207,9 +209,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
@ -221,9 +223,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
@ -232,9 +234,9 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "exp";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
@ -246,12 +248,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("y0: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
@ -263,12 +265,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("y0: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
@ -280,12 +282,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("y1: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
@ -297,12 +299,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("y1: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
@ -314,12 +316,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("yn: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
@ -331,12 +333,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("yn: DOMAIN error\n", 17);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
@ -348,9 +350,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
@ -362,12 +364,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("lgamma: SING error\n", 19);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
@ -379,12 +381,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("log: SING error\n", 16);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
@ -396,12 +398,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("log: DOMAIN error\n", 18);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
@ -413,12 +415,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("log10: SING error\n", 18);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
@ -430,12 +432,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("log10: DOMAIN error\n", 20);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
@ -447,7 +449,7 @@ static double zero = 0.0; /* used as const */
|
||||
if (_LIB_VERSION != _SVID_) exc.retval = 1.0;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
(void) WRITE2("pow(0,0): DOMAIN error\n", 23);
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
@ -464,9 +466,9 @@ static double zero = 0.0; /* used as const */
|
||||
if(x<zero&&fd_rint(y)!=y) exc.retval = -HUGE_VAL;
|
||||
}
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
@ -475,9 +477,9 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "pow";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
@ -489,12 +491,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
@ -506,12 +508,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = zero/zero; /* X/Open allow NaN */
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("neg**non-integral: DOMAIN error\n", 32);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
@ -523,9 +525,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = ( (x>zero) ? HUGE_VAL : -HUGE_VAL);
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
@ -537,12 +539,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = zero/zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("sqrt: DOMAIN error\n", 19);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
@ -554,12 +556,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = zero/zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("fmod: DOMAIN error\n", 20);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
@ -568,12 +570,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "remainder";
|
||||
exc.retval = zero/zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("remainder: DOMAIN error\n", 24);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 29:
|
||||
@ -582,12 +584,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "acosh";
|
||||
exc.retval = zero/zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("acosh: DOMAIN error\n", 20);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 30:
|
||||
@ -596,12 +598,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "atanh";
|
||||
exc.retval = zero/zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("atanh: DOMAIN error\n", 20);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 31:
|
||||
@ -610,12 +612,12 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "atanh";
|
||||
exc.retval = x/zero; /* sign(x)*inf */
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("atanh: SING error\n", 18);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
@ -624,9 +626,9 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "scalb";
|
||||
exc.retval = x > zero ? HUGE_VAL : -HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 33:
|
||||
@ -635,9 +637,9 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "scalb";
|
||||
exc.retval = fd_copysign(zero,x);
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 34:
|
||||
@ -646,13 +648,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "j0";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 35:
|
||||
@ -661,13 +663,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "y0";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 36:
|
||||
@ -676,13 +678,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "j1";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 37:
|
||||
@ -691,13 +693,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "y1";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 38:
|
||||
@ -706,13 +708,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "jn";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 39:
|
||||
@ -721,13 +723,13 @@ static double zero = 0.0; /* used as const */
|
||||
exc.name = "yn";
|
||||
exc.retval = zero;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2(exc.name, 2);
|
||||
(void) WRITE2(": TLOSS error\n", 14);
|
||||
}
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 40:
|
||||
@ -739,9 +741,9 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
}
|
||||
break;
|
||||
case 41:
|
||||
@ -753,12 +755,12 @@ static double zero = 0.0; /* used as const */
|
||||
else
|
||||
exc.retval = HUGE_VAL;
|
||||
if (_LIB_VERSION == _POSIX_)
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
if (_LIB_VERSION == _SVID_) {
|
||||
(void) WRITE2("gamma: SING error\n", 18);
|
||||
}
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
case 42:
|
||||
@ -770,7 +772,7 @@ static double zero = 0.0; /* used as const */
|
||||
if (_LIB_VERSION == _IEEE_ ||
|
||||
_LIB_VERSION == _POSIX_) exc.retval = 1.0;
|
||||
else if (!fd_matherr(&exc)) {
|
||||
errno = EDOM;
|
||||
*err = EDOM;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -65,7 +65,8 @@
|
||||
z = __ieee754_acos(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(fd_fabs(x)>1.0) {
|
||||
return __kernel_standard(x,x,1); /* acos(|x|>1) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,1,&err); /* acos(|x|>1) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -65,7 +65,8 @@
|
||||
z = __ieee754_acosh(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(x<1.0) {
|
||||
return __kernel_standard(x,x,29); /* acosh(x<1) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,29,&err); /* acosh(x<1) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -67,7 +67,8 @@
|
||||
z = __ieee754_asin(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(fd_fabs(x)>1.0) {
|
||||
return __kernel_standard(x,x,2); /* asin(|x|>1) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,2,&err); /* asin(|x|>1) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -66,7 +66,8 @@
|
||||
z = __ieee754_atan2(y,x);
|
||||
if(_LIB_VERSION == _IEEE_||fd_isnan(x)||fd_isnan(y)) return z;
|
||||
if(x==0.0&&y==0.0) {
|
||||
return __kernel_standard(y,x,3); /* atan2(+-0,+-0) */
|
||||
int err;
|
||||
return __kernel_standard(y,x,3,&err); /* atan2(+-0,+-0) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -65,10 +65,11 @@
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
y = fd_fabs(x);
|
||||
if(y>=1.0) {
|
||||
int err;
|
||||
if(y>1.0)
|
||||
return __kernel_standard(x,x,30); /* atanh(|x|>1) */
|
||||
return __kernel_standard(x,x,30,&err); /* atanh(|x|>1) */
|
||||
else
|
||||
return __kernel_standard(x,x,31); /* atanh(|x|==1) */
|
||||
return __kernel_standard(x,x,31,&err); /* atanh(|x|==1) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -64,7 +64,8 @@
|
||||
z = __ieee754_cosh(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(fd_fabs(x)>7.10475860073943863426e+02) {
|
||||
return __kernel_standard(x,x,5); /* cosh overflow */
|
||||
int err;
|
||||
return __kernel_standard(x,x,5,&err); /* cosh overflow */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -72,10 +72,11 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
|
||||
z = __ieee754_exp(x);
|
||||
if(_LIB_VERSION == _IEEE_) return z;
|
||||
if(fd_finite(x)) {
|
||||
int err;
|
||||
if(x>o_threshold)
|
||||
return __kernel_standard(x,x,6); /* exp overflow */
|
||||
return __kernel_standard(x,x,6,&err); /* exp overflow */
|
||||
else if(x<u_threshold)
|
||||
return __kernel_standard(x,x,7); /* exp underflow */
|
||||
return __kernel_standard(x,x,7,&err); /* exp underflow */
|
||||
}
|
||||
return z;
|
||||
#endif
|
||||
|
@ -65,7 +65,8 @@
|
||||
z = __ieee754_fmod(x,y);
|
||||
if(_LIB_VERSION == _IEEE_ ||fd_isnan(y)||fd_isnan(x)) return z;
|
||||
if(y==0.0) {
|
||||
return __kernel_standard(x,y,27); /* fmod(x,0) */
|
||||
int err;
|
||||
return __kernel_standard(x,y,27,&err); /* fmod(x,0) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -69,10 +69,11 @@ extern int signgam;
|
||||
y = __ieee754_gamma_r(x,&signgam);
|
||||
if(_LIB_VERSION == _IEEE_) return y;
|
||||
if(!fd_finite(y)&&fd_finite(x)) {
|
||||
int err;
|
||||
if(fd_floor(x)==x&&x<=0.0)
|
||||
return __kernel_standard(x,x,41); /* gamma pole */
|
||||
return __kernel_standard(x,x,41,&err); /* gamma pole */
|
||||
else
|
||||
return __kernel_standard(x,x,40); /* gamma overflow */
|
||||
return __kernel_standard(x,x,40,&err); /* gamma overflow */
|
||||
} else
|
||||
return y;
|
||||
#endif
|
||||
|
@ -65,10 +65,11 @@
|
||||
y = __ieee754_gamma_r(x,signgamp);
|
||||
if(_LIB_VERSION == _IEEE_) return y;
|
||||
if(!fd_finite(y)&&fd_finite(x)) {
|
||||
int err;
|
||||
if(fd_floor(x)==x&&x<=0.0)
|
||||
return __kernel_standard(x,x,41); /* gamma pole */
|
||||
return __kernel_standard(x,x,41,&err); /* gamma pole */
|
||||
else
|
||||
return __kernel_standard(x,x,40); /* gamma overflow */
|
||||
return __kernel_standard(x,x,40,&err); /* gamma overflow */
|
||||
} else
|
||||
return y;
|
||||
#endif
|
||||
|
@ -64,9 +64,10 @@
|
||||
double z;
|
||||
z = __ieee754_hypot(x,y);
|
||||
if(_LIB_VERSION == _IEEE_) return z;
|
||||
if((!fd_finite(z))&&fd_finite(x)&&fd_finite(y))
|
||||
return __kernel_standard(x,y,4); /* hypot overflow */
|
||||
else
|
||||
if((!fd_finite(z))&&fd_finite(x)&&fd_finite(y)) {
|
||||
int err;
|
||||
return __kernel_standard(x,y,4,&err); /* hypot overflow */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
}
|
||||
|
@ -63,7 +63,8 @@
|
||||
double z = __ieee754_j0(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(fd_fabs(x)>X_TLOSS) {
|
||||
return __kernel_standard(x,x,34); /* j0(|x|>X_TLOSS) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,34,&err); /* j0(|x|>X_TLOSS) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
@ -80,18 +81,19 @@
|
||||
return __ieee754_y0(x);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z = __ieee754_y0(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
|
||||
if(x <= 0.0){
|
||||
if(x==0.0)
|
||||
/* d= -one/(x-x); */
|
||||
return __kernel_standard(x,x,8);
|
||||
return __kernel_standard(x,x,8,&err);
|
||||
else
|
||||
/* d = zero/(x-x); */
|
||||
return __kernel_standard(x,x,9);
|
||||
return __kernel_standard(x,x,9,&err);
|
||||
}
|
||||
if(x>X_TLOSS) {
|
||||
return __kernel_standard(x,x,35); /* y0(x>X_TLOSS) */
|
||||
return __kernel_standard(x,x,35,&err); /* y0(x>X_TLOSS) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -64,7 +64,8 @@
|
||||
z = __ieee754_j1(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
|
||||
if(fd_fabs(x)>X_TLOSS) {
|
||||
return __kernel_standard(x,x,36); /* j1(|x|>X_TLOSS) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,36,&err); /* j1(|x|>X_TLOSS) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
@ -81,18 +82,19 @@
|
||||
return __ieee754_y1(x);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z = __ieee754_y1(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
|
||||
if(x <= 0.0){
|
||||
if(x==0.0)
|
||||
/* d= -one/(x-x); */
|
||||
return __kernel_standard(x,x,10);
|
||||
return __kernel_standard(x,x,10,&err);
|
||||
else
|
||||
/* d = zero/(x-x); */
|
||||
return __kernel_standard(x,x,11);
|
||||
return __kernel_standard(x,x,11,&err);
|
||||
}
|
||||
if(x>X_TLOSS) {
|
||||
return __kernel_standard(x,x,37); /* y1(x>X_TLOSS) */
|
||||
return __kernel_standard(x,x,37,&err); /* y1(x>X_TLOSS) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -86,7 +86,8 @@
|
||||
z = __ieee754_jn(n,x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
|
||||
if(fd_fabs(x)>X_TLOSS) {
|
||||
return __kernel_standard((double)n,x,38); /* jn(|x|>X_TLOSS,n) */
|
||||
int err;
|
||||
return __kernel_standard((double)n,x,38,&err); /* jn(|x|>X_TLOSS,n) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
@ -103,18 +104,19 @@
|
||||
return __ieee754_yn(n,x);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z = __ieee754_yn(n,x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
|
||||
if(x <= 0.0){
|
||||
if(x==0.0)
|
||||
/* d= -one/(x-x); */
|
||||
return __kernel_standard((double)n,x,12);
|
||||
return __kernel_standard((double)n,x,12,&err);
|
||||
else
|
||||
/* d = zero/(x-x); */
|
||||
return __kernel_standard((double)n,x,13);
|
||||
return __kernel_standard((double)n,x,13,&err);
|
||||
}
|
||||
if(x>X_TLOSS) {
|
||||
return __kernel_standard((double)n,x,39); /* yn(x>X_TLOSS,n) */
|
||||
return __kernel_standard((double)n,x,39,&err); /* yn(x>X_TLOSS,n) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -69,10 +69,11 @@ extern int signgam;
|
||||
y = __ieee754_lgamma_r(x,&signgam);
|
||||
if(_LIB_VERSION == _IEEE_) return y;
|
||||
if(!fd_finite(y)&&fd_finite(x)) {
|
||||
int err;
|
||||
if(fd_floor(x)==x&&x<=0.0)
|
||||
return __kernel_standard(x,x,15); /* lgamma pole */
|
||||
return __kernel_standard(x,x,15,&err); /* lgamma pole */
|
||||
else
|
||||
return __kernel_standard(x,x,14); /* lgamma overflow */
|
||||
return __kernel_standard(x,x,14,&err); /* lgamma overflow */
|
||||
} else
|
||||
return y;
|
||||
#endif
|
||||
|
@ -65,10 +65,11 @@
|
||||
y = __ieee754_lgamma_r(x,signgamp);
|
||||
if(_LIB_VERSION == _IEEE_) return y;
|
||||
if(!fd_finite(y)&&fd_finite(x)) {
|
||||
int err;
|
||||
if(fd_floor(x)==x&&x<=0.0)
|
||||
return __kernel_standard(x,x,15); /* lgamma pole */
|
||||
return __kernel_standard(x,x,15,&err); /* lgamma pole */
|
||||
else
|
||||
return __kernel_standard(x,x,14); /* lgamma overflow */
|
||||
return __kernel_standard(x,x,14,&err); /* lgamma overflow */
|
||||
} else
|
||||
return y;
|
||||
#endif
|
||||
|
@ -62,11 +62,12 @@
|
||||
return __ieee754_log(x);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z = __ieee754_log(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) || x > 0.0) return z;
|
||||
if(x==0.0)
|
||||
return __kernel_standard(x,x,16); /* log(0) */
|
||||
return __kernel_standard(x,x,16,&err); /* log(0) */
|
||||
else
|
||||
return __kernel_standard(x,x,17); /* log(x<0) */
|
||||
return __kernel_standard(x,x,17,&err); /* log(x<0) */
|
||||
#endif
|
||||
}
|
||||
|
@ -65,10 +65,11 @@
|
||||
z = __ieee754_log10(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(x<=0.0) {
|
||||
int err;
|
||||
if(x==0.0)
|
||||
return __kernel_standard(x,x,18); /* log10(0) */
|
||||
return __kernel_standard(x,x,18,&err); /* log10(0) */
|
||||
else
|
||||
return __kernel_standard(x,x,19); /* log10(x<0) */
|
||||
return __kernel_standard(x,x,19,&err); /* log10(x<0) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -63,31 +63,32 @@
|
||||
return __ieee754_pow(x,y);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z=__ieee754_pow(x,y);
|
||||
if(_LIB_VERSION == _IEEE_|| fd_isnan(y)) return z;
|
||||
if(fd_isnan(x)) {
|
||||
if(y==0.0)
|
||||
return __kernel_standard(x,y,42); /* pow(NaN,0.0) */
|
||||
return __kernel_standard(x,y,42,&err); /* pow(NaN,0.0) */
|
||||
else
|
||||
return z;
|
||||
}
|
||||
if(x==0.0){
|
||||
if(y==0.0)
|
||||
return __kernel_standard(x,y,20); /* pow(0.0,0.0) */
|
||||
return __kernel_standard(x,y,20,&err); /* pow(0.0,0.0) */
|
||||
if(fd_finite(y)&&y<0.0)
|
||||
return __kernel_standard(x,y,23); /* pow(0.0,negative) */
|
||||
return __kernel_standard(x,y,23,&err); /* pow(0.0,negative) */
|
||||
return z;
|
||||
}
|
||||
if(!fd_finite(z)) {
|
||||
if(fd_finite(x)&&fd_finite(y)) {
|
||||
if(fd_isnan(z))
|
||||
return __kernel_standard(x,y,24); /* pow neg**non-int */
|
||||
return __kernel_standard(x,y,24,&err); /* pow neg**non-int */
|
||||
else
|
||||
return __kernel_standard(x,y,21); /* pow overflow */
|
||||
return __kernel_standard(x,y,21,&err); /* pow overflow */
|
||||
}
|
||||
}
|
||||
if(z==0.0&&fd_finite(x)&&fd_finite(y))
|
||||
return __kernel_standard(x,y,22); /* pow underflow */
|
||||
return __kernel_standard(x,y,22,&err); /* pow underflow */
|
||||
return z;
|
||||
#endif
|
||||
}
|
||||
|
@ -63,9 +63,10 @@
|
||||
double z;
|
||||
z = __ieee754_remainder(x,y);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(y)) return z;
|
||||
if(y==0.0)
|
||||
return __kernel_standard(x,y,28); /* remainder(x,0) */
|
||||
else
|
||||
if(y==0.0) {
|
||||
int err;
|
||||
return __kernel_standard(x,y,28,&err); /* remainder(x,0) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
}
|
||||
|
@ -73,13 +73,14 @@
|
||||
return __ieee754_scalb(x,fn);
|
||||
#else
|
||||
double z;
|
||||
int err;
|
||||
z = __ieee754_scalb(x,fn);
|
||||
if(_LIB_VERSION == _IEEE_) return z;
|
||||
if(!(fd_finite(z)||fd_isnan(z))&&fd_finite(x)) {
|
||||
return __kernel_standard(x,(double)fn,32); /* scalb overflow */
|
||||
return __kernel_standard(x,(double)fn,32,&err); /* scalb overflow */
|
||||
}
|
||||
if(z==0.0&&z!=x) {
|
||||
return __kernel_standard(x,(double)fn,33); /* scalb underflow */
|
||||
return __kernel_standard(x,(double)fn,33,&err); /* scalb underflow */
|
||||
}
|
||||
#ifndef _SCALB_INT
|
||||
if(!fd_finite(fn)) errno = ERANGE;
|
||||
|
@ -64,7 +64,8 @@
|
||||
z = __ieee754_sinh(x);
|
||||
if(_LIB_VERSION == _IEEE_) return z;
|
||||
if(!fd_finite(z)&&fd_finite(x)) {
|
||||
return __kernel_standard(x,x,25); /* sinh overflow */
|
||||
int err;
|
||||
return __kernel_standard(x,x,25,&err); /* sinh overflow */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -64,7 +64,8 @@
|
||||
z = __ieee754_sqrt(x);
|
||||
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
|
||||
if(x<0.0) {
|
||||
return __kernel_standard(x,x,26); /* sqrt(negative) */
|
||||
int err;
|
||||
return __kernel_standard(x,x,26,&err); /* sqrt(negative) */
|
||||
} else
|
||||
return z;
|
||||
#endif
|
||||
|
@ -88,7 +88,7 @@
|
||||
/* strtod for IEEE-arithmetic machines.
|
||||
*
|
||||
* This strtod returns a nearest machine number to the input decimal
|
||||
* string (or sets errno to ERANGE). With IEEE arithmetic, ties are
|
||||
* string (or sets err to ERANGE). With IEEE arithmetic, ties are
|
||||
* broken by the IEEE round-even rule. Otherwise ties are broken by
|
||||
* biased rounding (add half and chop).
|
||||
*
|
||||
@ -1087,7 +1087,7 @@ void js_FinishDtoa(void)
|
||||
/* nspr2 watcom bug ifdef omitted */
|
||||
|
||||
JS_FRIEND_API(double)
|
||||
JS_strtod(CONST char *s00, char **se)
|
||||
JS_strtod(CONST char *s00, char **se, int *err)
|
||||
{
|
||||
int32 scale;
|
||||
int32 bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign,
|
||||
@ -1102,6 +1102,8 @@ JS_strtod(CONST char *s00, char **se)
|
||||
if (!initialized) InitDtoa();
|
||||
#endif
|
||||
|
||||
*err = 0;
|
||||
|
||||
bb = bd = bs = delta = NULL;
|
||||
sign = nz0 = nz = 0;
|
||||
rv = 0.;
|
||||
@ -1293,7 +1295,7 @@ dig_done:
|
||||
if (e1 &= ~15) {
|
||||
if (e1 > DBL_MAX_10_EXP) {
|
||||
ovfl:
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
#ifdef __STDC__
|
||||
rv = HUGE_VAL;
|
||||
#else
|
||||
@ -1364,7 +1366,7 @@ dig_done:
|
||||
if (!rv) {
|
||||
undfl:
|
||||
rv = 0.;
|
||||
errno = ERANGE;
|
||||
*err = ERANGE;
|
||||
if (bd0)
|
||||
goto retfree;
|
||||
goto ret;
|
||||
|
@ -54,7 +54,7 @@ JS_BEGIN_EXTERN_C
|
||||
* zero is returned.
|
||||
*/
|
||||
JS_FRIEND_API(double)
|
||||
JS_strtod(const char *s00, char **se);
|
||||
JS_strtod(const char *s00, char **se, int *err);
|
||||
|
||||
/*
|
||||
* Modes for converting floating-point numbers to strings.
|
||||
|
@ -611,7 +611,6 @@ js_ValueToNumber(JSContext *cx, jsval v, jsdouble *dp)
|
||||
*dp = *JSVAL_TO_DOUBLE(v);
|
||||
} else if (JSVAL_IS_STRING(v)) {
|
||||
str = JSVAL_TO_STRING(v);
|
||||
errno = 0;
|
||||
/*
|
||||
* Note that ECMA doesn't treat a string beginning with a '0' as an
|
||||
* octal number here. This works because all such numbers will be
|
||||
@ -801,9 +800,9 @@ js_strtod(JSContext *cx, const jschar *s, const jschar **ep, jsdouble *dp)
|
||||
d = *(negative ? cx->runtime->jsNegativeInfinity : cx->runtime->jsPositiveInfinity);
|
||||
estr = istr + 8;
|
||||
} else {
|
||||
errno = 0;
|
||||
d = JS_strtod(cstr, &estr);
|
||||
if (errno == ERANGE) {
|
||||
int err;
|
||||
d = JS_strtod(cstr, &estr, &err);
|
||||
if (err == ERANGE) {
|
||||
if (d == HUGE_VAL)
|
||||
d = *cx->runtime->jsPositiveInfinity;
|
||||
else if (d == -HUGE_VAL)
|
||||
@ -924,6 +923,7 @@ js_strtointeger(JSContext *cx, const jschar *s, const jschar **ep, jsint base, j
|
||||
size_t length = s1 - start;
|
||||
char *cstr = (char *) malloc(length + 1);
|
||||
char *estr;
|
||||
int err=0;
|
||||
|
||||
if (!cstr)
|
||||
return JS_FALSE;
|
||||
@ -931,9 +931,8 @@ js_strtointeger(JSContext *cx, const jschar *s, const jschar **ep, jsint base, j
|
||||
cstr[i] = (char)start[i];
|
||||
cstr[length] = 0;
|
||||
|
||||
errno = 0;
|
||||
value = JS_strtod(cstr, &estr);
|
||||
if (errno == ERANGE && value == HUGE_VAL)
|
||||
value = JS_strtod(cstr, &estr, &err);
|
||||
if (err == ERANGE && value == HUGE_VAL)
|
||||
value = *cx->runtime->jsPositiveInfinity;
|
||||
free(cstr);
|
||||
} else if ((base & (base - 1)) == 0) {
|
||||
|
@ -260,7 +260,7 @@ js_NewFileTokenStream(JSContext *cx, const char *filename, FILE *defaultfp)
|
||||
file = fopen(filename, "r");
|
||||
if (!file) {
|
||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_CANT_OPEN,
|
||||
filename, strerror(errno));
|
||||
filename, "No such file or directory");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user