Make to_hex() behave portably on negative input values (treat them as
authorTom Lane
Fri, 19 Dec 2003 04:56:41 +0000 (04:56 +0000)
committerTom Lane
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 8e01f9f539ef237cace2a8652127196d1e918406..f4d21571ff347eb8a579d40810691fbcb63be73f 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';