py/parse: Use m_renew_maybe to ensure that memory is shrunk in-place.
The chunks of memory that the parser allocates contain parse nodes and are pointed to from many places, so these chunks cannot be relocated by the memory manager. This patch makes it so that when a chunk is shrunk to fit, it is not relocated.
This commit is contained in:
parent
add930c4b5
commit
d6c558c0aa
|
@ -166,8 +166,8 @@ STATIC void *parser_alloc(parser_t *parser, size_t num_bytes) {
|
|||
sizeof(mp_parse_chunk_t) + chunk->alloc + num_bytes, false);
|
||||
if (new_data == NULL) {
|
||||
// could not grow existing memory; shrink it to fit previous
|
||||
(void)m_renew(byte, chunk, sizeof(mp_parse_chunk_t) + chunk->alloc,
|
||||
sizeof(mp_parse_chunk_t) + chunk->union_.used);
|
||||
(void)m_renew_maybe(byte, chunk, sizeof(mp_parse_chunk_t) + chunk->alloc,
|
||||
sizeof(mp_parse_chunk_t) + chunk->union_.used, false);
|
||||
chunk->alloc = chunk->union_.used;
|
||||
chunk->union_.next = parser->tree.chunk;
|
||||
parser->tree.chunk = chunk;
|
||||
|
|
Loading…
Reference in New Issue