Improve dpow() check for ERANGE overflow for HPPA.

This commit is contained in:
Bruce Momjian 2007-01-06 04:14:55 +00:00
parent b2965b9fce
commit 19ce06b91b
1 changed files with 4 additions and 5 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.143 2007/01/06 02:28:38 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.144 2007/01/06 04:14:55 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -1459,10 +1459,9 @@ dpow(PG_FUNCTION_ARGS)
else else
result = 1; result = 1;
} }
else if (errno == ERANGE) /* Some platoforms, e.g. HPPA, return ERANGE, but HUGE_VAL, not Inf */
{ else if (errno == ERANGE && !isinf(result))
result = (arg1 >= 0) ? get_float8_infinity() : -get_float8_infinity(); result = get_float8_infinity();
}
CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0); CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0);
PG_RETURN_FLOAT8(result); PG_RETURN_FLOAT8(result);