aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/float.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r--src/backend/utils/adt/float.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 9cda3706afa..ef2da34a80e 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -8,7 +8,7 @@
*
*
* 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
result = 1;
}
- else if (errno == ERANGE)
- {
- result = (arg1 >= 0) ? get_float8_infinity() : -get_float8_infinity();
- }
+ /* Some platoforms, e.g. HPPA, return ERANGE, but HUGE_VAL, not Inf */
+ else if (errno == ERANGE && !isinf(result))
+ result = get_float8_infinity();
CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0);
PG_RETURN_FLOAT8(result);