Index: src/backend/utils/adt/float.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/adt/float.c,v
retrieving revision 1.145
diff -c -c -r1.145 float.c
*** src/backend/utils/adt/float.c	6 Jan 2007 15:18:02 -0000	1.145
--- src/backend/utils/adt/float.c	6 Jan 2007 20:15:22 -0000
***************
*** 1459,1465 ****
  		else
  			result = 1;
  	}
! 	else if (errno == ERANGE && !isinf(result))
  		result = get_float8_infinity();
  	
  	CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0);
--- 1459,1465 ----
  		else
  			result = 1;
  	}
! 	else if (errno == ERANGE && result != 0 && !isinf(result))
  		result = get_float8_infinity();
  	
  	CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0);
***************
*** 1478,1484 ****
  
  	errno = 0;
  	result = exp(arg1);
! 	if (errno == ERANGE && !isinf(result))
  		result = get_float8_infinity();
  
  	CHECKFLOATVAL(result, isinf(arg1), false);
--- 1478,1484 ----
  
  	errno = 0;
  	result = exp(arg1);
! 	if (errno == ERANGE && result != 0 && !isinf(result))
  		result = get_float8_infinity();
  
  	CHECKFLOATVAL(result, isinf(arg1), false);
