Commit c2754991 authored by Tom Lane's avatar Tom Lane

Minor fixes for hstore_to_json_loose().

Fix unportable use of isdigit(), get rid of useless calculations.
parent 4387cf95
...@@ -1299,7 +1299,8 @@ hstore_to_json_loose(PG_FUNCTION_ARGS) ...@@ -1299,7 +1299,8 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
* don't treat something with a leading zero followed by another * don't treat something with a leading zero followed by another
* digit as numeric - could be a zip code or similar * 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) strspn(src->data, "+-0123456789Ee.") == src->len)
{ {
/* /*
...@@ -1308,7 +1309,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS) ...@@ -1308,7 +1309,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
*/ */
char *endptr = "junk"; char *endptr = "junk";
(void) (strtol(src->data, &endptr, 10) + 1); (void) strtol(src->data, &endptr, 10);
if (*endptr == '\0') if (*endptr == '\0')
{ {
/* /*
...@@ -1320,7 +1321,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS) ...@@ -1320,7 +1321,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
else else
{ {
/* not an int - try a double */ /* not an int - try a double */
(void) (strtod(src->data, &endptr) + 1.0); (void) strtod(src->data, &endptr);
if (*endptr == '\0') if (*endptr == '\0')
is_number = true; is_number = true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment