Skip to content

Commit 5dd69bf

Browse files
committed
Free memory
1 parent 97cc7c9 commit 5dd69bf

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

gframe/replay.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ bool Replay::OpenReplayFromBuffer(std::vector<uint8_t>&& contents) {
141141
stream.avail_in = fake_header.size();
142142
stream.next_in = fake_header.data();
143143

144-
stream.avail_out = pheader.datasize;
144+
stream.avail_out = pheader.base.datasize;
145145
stream.next_out = replay_data.data();
146146

147147
if(lzma_alone_decoder(&stream, UINT64_MAX) != LZMA_OK) {
@@ -153,12 +153,14 @@ bool Replay::OpenReplayFromBuffer(std::vector<uint8_t>&& contents) {
153153
// this is should only feed the fake header, if for some reasons
154154
// LZMA_STREAM_END is returned, then something went wrong
155155
if(lzma_code(&stream, LZMA_RUN) != LZMA_OK) {
156+
lzma_end(&stream);
156157
Reset();
157158
return false;
158159
}
159160
}
160161

161162
if(stream.total_out != 0) {
163+
lzma_end(&stream);
162164
Reset();
163165
return false;
164166
}
@@ -170,6 +172,7 @@ bool Replay::OpenReplayFromBuffer(std::vector<uint8_t>&& contents) {
170172
auto ret = lzma_code(&stream, LZMA_RUN);
171173
if(ret == LZMA_STREAM_END) {
172174
if(stream.total_out != pheader.datasize) {
175+
lzma_end(&stream);
173176
Reset();
174177
return false;
175178
}
@@ -182,9 +185,11 @@ bool Replay::OpenReplayFromBuffer(std::vector<uint8_t>&& contents) {
182185
if(ret == LZMA_DATA_ERROR && stream.total_out == pheader.datasize)
183186
break;
184187
Reset();
188+
lzma_end(&stream);
185189
return false;
186190
}
187191
}
192+
lzma_end(&stream);
188193
} else {
189194
contents.erase(contents.begin(), contents.begin() + sizeof(pheader));
190195
replay_data = std::move(contents);

0 commit comments

Comments
 (0)