Commit eef0a7d6 authored by Linshizhi's avatar Linshizhi

Fix memory errors.

parent 9fe2e5d4
......@@ -6,6 +6,8 @@
namespace IOProto {
namespace MovMemProto {
int i = 0;
int MovMemProto::read_packet_internal(void *priv, uint8_t *buf, int bufSize) {
if (flag == write || bufSize < 0 || buf == nullptr) {
......
......@@ -10,7 +10,7 @@ namespace IOProto {
namespace MovMemProto {
struct PacketMem {
std::shared_ptr<uint8_t> data;
std::shared_ptr<uint8_t[]> data;
size_t size;
};
......@@ -40,8 +40,8 @@ public:
void close_internal();
void push(uint8_t *data, size_t size) {
s.push(MemPiece{ std::shared_ptr<uint8_t>(data), size });
void push(uint8_t data[], size_t size) {
s.push(MemPiece{ std::shared_ptr<uint8_t[]>(data), size });
}
void eof() {
......
......@@ -35,7 +35,9 @@ public:
IOProtocol(std::string name, RW_FLAG flag, void *priv):
name(name), flag(flag), io(nullptr), priv(priv) {}
~IOProtocol() {};
~IOProtocol() {
avio_context_free(&io);
}
int read_packet(void *priv, uint8_t *buf, int bufSize) {
return static_cast<T*>(this)->read_packet_internal(priv, buf, bufSize);
......@@ -58,7 +60,7 @@ public:
if (io == nullptr) {
// This buffer is managed by libav
uint8_t *buffer = new uint8_t[DEFAULT_BUFFER_SIZE];
uint8_t *buffer = (uint8_t*)malloc(DEFAULT_BUFFER_SIZE);
io = avio_alloc_context(
buffer, DEFAULT_BUFFER_SIZE, flag == write, static_cast<void*>(this),
......
......@@ -204,7 +204,6 @@ TEST_F(IOCTX_With_MovMem_Proto_Fixture, Initialize) {
}
int i = 0;
uint8_t *mem;
while (true) {
int ret = inCtx.readFrame_(&packet);
......@@ -223,14 +222,13 @@ TEST_F(IOCTX_With_MovMem_Proto_Fixture, Initialize) {
abort();
}
mem = (uint8_t*)malloc(packet.size);
mem = new uint8_t[packet.size];
memcpy(mem, packet.data, packet.size);
mmProto->push(mem, packet.size);
++i;
av_packet_unref(&packet);
}
av_bsf_free(&bsCtx);
mmProto->eof();
});
......@@ -292,6 +290,9 @@ TEST_F(IOCTX_With_MovMem_Proto_Fixture, Initialize) {
}
oCtx.writeTrailer();
inCtxMM->closeCustomIO();
delete inCtxMM;
ASSERT_TRUE(Utils::isVideoValid(outFilePath));
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment