diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-12-19 04:56:41 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-12-19 04:56:41 +0000 |
commit | 7fc2d50877ff782d1e4196b3adba544e28fb3225 (patch) | |
tree | eca80a33b85ef5d33cfc2fa22068981a37f097f0 /src | |
parent | edc7f146e32355080164629b944ae4073aca343c (diff) | |
download | postgresql-7fc2d50877ff782d1e4196b3adba544e28fb3225.tar.gz postgresql-7fc2d50877ff782d1e4196b3adba544e28fb3225.zip |
Make to_hex() behave portably on negative input values (treat them as
unsigned integers). Per report from Jim Crate.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/varlena.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 8e01f9f539e..f4d21571ff3 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.108 2003/11/30 20:55:09 joe Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.109 2003/12/19 04:56:41 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2230,11 +2230,11 @@ array_to_text(PG_FUNCTION_ARGS) Datum to_hex32(PG_FUNCTION_ARGS) { - static char digits[] = "0123456789abcdef"; - char buf[32]; /* bigger than needed, but reasonable */ - char *ptr; + uint32 value = (uint32) PG_GETARG_INT32(0); text *result_text; - int32 value = PG_GETARG_INT32(0); + char *ptr; + const char *digits = "0123456789abcdef"; + char buf[32]; /* bigger than needed, but reasonable */ ptr = buf + sizeof(buf) - 1; *ptr = '\0'; @@ -2256,11 +2256,11 @@ to_hex32(PG_FUNCTION_ARGS) Datum to_hex64(PG_FUNCTION_ARGS) { - static char digits[] = "0123456789abcdef"; - char buf[32]; /* bigger than needed, but reasonable */ - char *ptr; + uint64 value = (uint64) PG_GETARG_INT64(0); text *result_text; - int64 value = PG_GETARG_INT64(0); + char *ptr; + const char *digits = "0123456789abcdef"; + char buf[32]; /* bigger than needed, but reasonable */ ptr = buf + sizeof(buf) - 1; *ptr = '\0'; |