diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c index a9e926c..ed1e2cf 100644 --- a/src/backend/access/transam/xlogreader.c +++ b/src/backend/access/transam/xlogreader.c @@ -936,9 +936,23 @@ ResetDecoder(XLogReaderState *state) state->decoded_record = NULL; state->main_data_len = 0; + if (state->main_data) + { + pfree(state->main_data); + state->main_data = NULL; + } for (block_id = 0; block_id <= state->max_block_id; block_id++) { + if (state->blocks[block_id].in_use) + { + if (state->blocks[block_id].data) + { + pfree(state->blocks[block_id].data); + state->blocks[block_id].data = NULL; + } + } + state->blocks[block_id].in_use = false; state->blocks[block_id].has_image = false; state->blocks[block_id].has_data = false;