mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-15 15:16:51 +02:00
When the original PR was applied, the resource leak had been fixed, but a dual free problem had been happened. When msgpack_unpacker_next returns MSGPACK_UNPACK_CONTINUE, msgpack_unpacked::zone is not replaced. Then mespack_zone_free is called twice with the same object. msgpack_unpacked_destroy frees msgpack::zone when it is not NULL and set it to NULL. Also, fixed memory leak (msgpack_sbuffer) on the test code.
This commit is contained in:
@@ -492,9 +492,7 @@ void msgpack_unpacker_reset(msgpack_unpacker* mpac)
|
||||
|
||||
msgpack_unpack_return msgpack_unpacker_next(msgpack_unpacker* mpac, msgpack_unpacked* result)
|
||||
{
|
||||
if(result->zone != NULL) {
|
||||
msgpack_zone_free(result->zone);
|
||||
}
|
||||
msgpack_unpacked_destroy(result);
|
||||
|
||||
int ret = msgpack_unpacker_execute(mpac);
|
||||
|
||||
|
@@ -110,5 +110,5 @@ TEST(streaming, basic)
|
||||
|
||||
msgpack_unpacker_destroy(&pac);
|
||||
msgpack_unpacked_destroy(&result);
|
||||
msgpack_sbuffer_free(buffer);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user