sample_muxer: fix Segment memory leak on error

use an auto_ptr<mkvparser::Segment> for compatibility which should be
harmless as there is no attempt to transfer ownership; sample.cpp
operates similarly.

Change-Id: I2cb6982aa64c62ff2ec7cbbd646770cb4e782509
This commit is contained in:
James Zern 2015-08-27 21:07:19 -07:00
parent 1c5bd949d0
commit a57d6602b4

View File

@ -9,6 +9,7 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <memory>
#include <list>
#include <string>
@ -249,14 +250,15 @@ int main(int argc, char* argv[]) {
mkvparser::EBMLHeader ebml_header;
ebml_header.Parse(&reader, pos);
mkvparser::Segment* parser_segment;
mkvparser::Segment* parser_segment_;
long long ret =
mkvparser::Segment::CreateInstance(&reader, pos, parser_segment);
mkvparser::Segment::CreateInstance(&reader, pos, parser_segment_);
if (ret) {
printf("\n Segment::CreateInstance() failed.");
return EXIT_FAILURE;
}
const std::auto_ptr<mkvparser::Segment> parser_segment(parser_segment_);
ret = parser_segment->Load();
if (ret < 0) {
printf("\n Segment::Load() failed.");
@ -573,7 +575,6 @@ int main(int argc, char* argv[]) {
}
delete[] data;
delete parser_segment;
return EXIT_SUCCESS;
}