Use limits.h for INT, SHRT, and SCHAR min and max values rather than
hardcoded values.
This commit is contained in:
parent
174f984b76
commit
2fa330284c
@ -10,13 +10,16 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.16 1997/09/18 20:22:15 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.17 1997/11/17 16:26:27 thomas Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#include <stdio.h> /* for sprintf() */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#ifdef HAVE_LIMITS
|
||||
#include <limits.h>
|
||||
#endif
|
||||
#include "postgres.h"
|
||||
#include "utils/builtins.h" /* where the declarations go */
|
||||
#ifndef HAVE_MEMMOVE
|
||||
@ -26,6 +29,25 @@
|
||||
#endif
|
||||
#include <port-protos.h> /* ecvt(), fcvt() */
|
||||
|
||||
#ifndef INT_MAX
|
||||
#define INT_MAX (0x7FFFFFFFL)
|
||||
#endif
|
||||
#ifndef INT_MIN
|
||||
#define INT_MIN (-0x80000000L)
|
||||
#endif
|
||||
#ifndef SHRT_MAX
|
||||
#define SHRT_MAX (0x7FFF)
|
||||
#endif
|
||||
#ifndef SHRT_MIN
|
||||
#define SHRT_MIN (-0x8000)
|
||||
#endif
|
||||
#ifndef SCHAR_MAX
|
||||
#define SCHAR_MAX (0x7F)
|
||||
#endif
|
||||
#ifndef SCHAR_MIN
|
||||
#define SCHAR_MIN (-0x80)
|
||||
#endif
|
||||
|
||||
int32
|
||||
pg_atoi(char *s, int size, int c)
|
||||
{
|
||||
@ -46,12 +68,12 @@ pg_atoi(char *s, int size, int c)
|
||||
case sizeof(int32):
|
||||
#ifdef HAS_LONG_LONG
|
||||
/* won't get ERANGE on these with 64-bit longs... */
|
||||
if (l < -0x80000000L)
|
||||
if (l < INT_MIN)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
}
|
||||
if (l > 0x7fffffffL)
|
||||
if (l > INT_MAX)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
@ -59,24 +81,24 @@ pg_atoi(char *s, int size, int c)
|
||||
#endif /* HAS_LONG_LONG */
|
||||
break;
|
||||
case sizeof(int16):
|
||||
if (l < -0x8000)
|
||||
if (l < SHRT_MIN)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
}
|
||||
if (l > 0x7fff)
|
||||
if (l > SHRT_MAX)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
}
|
||||
break;
|
||||
case sizeof(int8):
|
||||
if (l < -0x80)
|
||||
if (l < SCHAR_MIN)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
}
|
||||
if (l > 0x7f)
|
||||
if (l > SCHAR_MAX)
|
||||
{
|
||||
errno = ERANGE;
|
||||
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
|
||||
|
Loading…
x
Reference in New Issue
Block a user