diff --git a/cJSON.c b/cJSON.c index 03cfd7a..ff69c9c 100644 --- a/cJSON.c +++ b/cJSON.c @@ -154,21 +154,20 @@ void cJSON_Delete(cJSON *c) } /* Parse the input text to generate a number, and populate the result into item. */ -static const unsigned char *parse_number(cJSON *item, const unsigned char *num) +static const unsigned char *parse_number(cJSON * const item, const unsigned char * const input) { double number = 0; - unsigned char *endpointer = NULL; + unsigned char *after_end = NULL; - if (num == NULL) + if (input == NULL) { return NULL; } - number = strtod((const char*)num, (char**)&endpointer); - if ((num == endpointer) || (num == NULL)) + number = strtod((const char*)input, (char**)&after_end); + if (input == after_end) { - /* parse_error */ - return NULL; + return NULL; /* parse_error */ } item->valuedouble = number; @@ -186,9 +185,10 @@ static const unsigned char *parse_number(cJSON *item, const unsigned char *num) { item->valueint = (int)number; } + item->type = cJSON_Number; - return endpointer; + return after_end; } /* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */