aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua_cjson.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/lua_cjson.c b/lua_cjson.c
index cd3b9f7..de67766 100644
--- a/lua_cjson.c
+++ b/lua_cjson.c
@@ -663,19 +663,29 @@ static void json_next_number_token(json_parse_t *json, json_token_t *token)
663{ 663{
664 const char *startptr; 664 const char *startptr;
665 char *endptr; 665 char *endptr;
666 int i;
666 667
667 /* FIXME: 668 /* JSON numbers should take the following form:
668 * Verify that the number takes the following form: 669 * -?(0|[1-9]|[1-9][0-9]+)(.[0-9]+)?([eE][-+]?[0-9]+)?
669 * -?(0|[1-9]|[1-9][0-9]+)(.[0-9]+)?([eE][-+]?[0-9]+)? 670 *
670 * strtod() below allows other forms (Hex, infinity, NaN,..) */ 671 * strtod() below allows other forms:
671 /* i = json->index; 672 * - numbers starting with '+'
673 * - infinity, NaN
674 * - hexidecimal numbers
675 *
676 * Infinity/NaN and numbers starting with '+' can't occur due to
677 * earlier parser error checking.
678 *
679 * Generate an error if a hexidecimal number has been
680 * provided ("0x" or "0X").
681 */
682 i = json->index;
672 if (json->data[i] == '-') 683 if (json->data[i] == '-')
673 i++; 684 i++;
674 j = i; 685 if (json->data[i] == '0' && (json->data[i + 1] | 0x20) == 'x') {
675 while ('0' <= json->data[i] && json->data[i] <= '9') 686 json_set_token_error(token, json, "invalid number (hexidecimal)");
676 i++; 687 return;
677 if (i == j) 688 }
678 return T_ERROR; */
679 689
680 token->type = T_NUMBER; 690 token->type = T_NUMBER;
681 startptr = &json->data[json->index]; 691 startptr = &json->data[json->index];