Fix loss of buffer in NSJSONSerialization.

The first time bufferSize is extended, number loses the previously parsed characters.
After malloc the number, copy the numberBuffer to the number.
This commit is contained in:
niwatako 2020-05-01 23:51:55 +09:00
parent 40a482a579
commit 6869df9a50

View file

@ -468,11 +468,16 @@ parseNumber(ParserState *state)
{\
bufferSize *= 2;\
if (number == numberBuffer)\
number = malloc(bufferSize);\
{\
number = malloc(bufferSize);\
memcpy(number, numberBuffer, sizeof(numberBuffer));\
}\
else\
number = realloc(number, bufferSize);\
{\
number = realloc(number, bufferSize);\
}\
}\
number[parsedSize++] = (char)x; } while (0)
number[parsedSize++] = (char)x; } while (0)
// JSON numbers must start with a - or a digit
if (!(c == '-' || isdigit(c)))
{