OSDN Git Service

Make to_hex() behave portably on negative input values (treat them as
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Dec 2003 04:56:41 +0000 (04:56 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Dec 2003 04:56:41 +0000 (04:56 +0000)
unsigned integers).  Per report from Jim Crate.

src/backend/utils/adt/varlena.c

index 8e01f9f..f4d2157 100644 (file)
@@ -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';