Skip to content
Snippets Groups Projects
Commit 0fc7779d authored by Tom Lane's avatar Tom Lane
Browse files

Revise overflow test in int84() to avoid codegen bug in some older

versions of gcc.  We don't really need to explicitly test the limits
anyway, just reverse-convert and see if we get the same answer.
parent de77c555
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.32 2001/08/24 14:07:49 petere Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.33 2001/09/07 01:33:44 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -67,7 +67,7 @@ int8in(PG_FUNCTION_ARGS) ...@@ -67,7 +67,7 @@ int8in(PG_FUNCTION_ARGS)
* Do our own scan, rather than relying on sscanf which might be * Do our own scan, rather than relying on sscanf which might be
* broken for long long. * broken for long long.
*/ */
while (*ptr && isspace((unsigned char) *ptr)) /* skip leading spaces */ while (*ptr && isspace((unsigned char) *ptr)) /* skip leading spaces */
ptr++; ptr++;
if (*ptr == '-') /* handle sign */ if (*ptr == '-') /* handle sign */
sign = -1, ptr++; sign = -1, ptr++;
...@@ -688,11 +688,12 @@ int84(PG_FUNCTION_ARGS) ...@@ -688,11 +688,12 @@ int84(PG_FUNCTION_ARGS)
int64 val = PG_GETARG_INT64(0); int64 val = PG_GETARG_INT64(0);
int32 result; int32 result;
if ((val < INT_MIN) || (val > INT_MAX))
elog(ERROR, "int8 conversion to int4 is out of range");
result = (int32) val; result = (int32) val;
/* Test for overflow by reverse-conversion. */
if ((int64) result != val)
elog(ERROR, "int8 conversion to int4 is out of range");
PG_RETURN_INT32(result); PG_RETURN_INT32(result);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment