]> granicus.if.org Git - postgresql/commitdiff
Minor fixes for hstore_to_json_loose().
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 14 Mar 2013 17:51:47 +0000 (13:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 14 Mar 2013 17:51:47 +0000 (13:51 -0400)
Fix unportable use of isdigit(), get rid of useless calculations.

contrib/hstore/hstore_io.c

index 07b60e621b2fe0d4364d477909076b5777215567..a9a55d89b8b575a6bf8b819627f79f55cfa7e9d9 100644 (file)
@@ -1299,7 +1299,8 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
                         * don't treat something with a leading zero followed by another
                         * digit as numeric - could be a zip code or similar
                         */
-                       if (src->len > 0 && (src->data[0] != '0' || !isdigit(src->data[1])) &&
+                       if (src->len > 0 &&
+                               !(src->data[0] == '0' && isdigit((unsigned char) src->data[1])) &&
                                strspn(src->data, "+-0123456789Ee.") == src->len)
                        {
                                /*
@@ -1308,7 +1309,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
                                 */
                                char       *endptr = "junk";
 
-                               (void) (strtol(src->data, &endptr, 10) + 1);
+                               (void) strtol(src->data, &endptr, 10);
                                if (*endptr == '\0')
                                {
                                        /*
@@ -1320,7 +1321,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
                                else
                                {
                                        /* not an int - try a double */
-                                       (void) (strtod(src->data, &endptr) + 1.0);
+                                       (void) strtod(src->data, &endptr);
                                        if (*endptr == '\0')
                                                is_number = true;
                                }