mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Fix the double free bug
This commit is contained in:
parent
b1df04cb09
commit
6a4e043349
3 changed files with 4 additions and 12 deletions
|
@ -1212,8 +1212,6 @@ srs_error_t SrsRtcSenderThread::packet_nalus(SrsSharedPtrMessage* msg, SrsRtcPac
|
||||||
|
|
||||||
packet->payload = raw;
|
packet->payload = raw;
|
||||||
} else {
|
} else {
|
||||||
SrsAutoFree(SrsRtpRawNALUs, raw);
|
|
||||||
|
|
||||||
// Package NALUs in FU-A RTP packets.
|
// Package NALUs in FU-A RTP packets.
|
||||||
int fu_payload_size = kRtpMaxPayloadSize;
|
int fu_payload_size = kRtpMaxPayloadSize;
|
||||||
|
|
||||||
|
|
|
@ -157,19 +157,19 @@ SrsRtpPacket2::SrsRtpPacket2()
|
||||||
cache_raw = new SrsRtpRawPayload();
|
cache_raw = new SrsRtpRawPayload();
|
||||||
cache_fua = new SrsRtpFUAPayload2();
|
cache_fua = new SrsRtpFUAPayload2();
|
||||||
cache_payload = 0;
|
cache_payload = 0;
|
||||||
using_cache = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtpPacket2::~SrsRtpPacket2()
|
SrsRtpPacket2::~SrsRtpPacket2()
|
||||||
{
|
{
|
||||||
// We may use the cache as payload.
|
// We may use the cache as payload.
|
||||||
if (using_cache) {
|
if (payload == cache_raw || payload == cache_fua) {
|
||||||
payload = NULL;
|
payload = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_freep(payload);
|
srs_freep(payload);
|
||||||
srs_freep(extra_payload);
|
srs_freep(extra_payload);
|
||||||
srs_freep(cache_raw);
|
srs_freep(cache_raw);
|
||||||
|
srs_freep(cache_fua);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SrsRtpPacket2::set_padding(int size)
|
void SrsRtpPacket2::set_padding(int size)
|
||||||
|
@ -198,25 +198,20 @@ void SrsRtpPacket2::reset()
|
||||||
srs_freep(extra_payload);
|
srs_freep(extra_payload);
|
||||||
|
|
||||||
// We may use the cache as payload.
|
// We may use the cache as payload.
|
||||||
if (using_cache) {
|
if (payload == cache_raw || payload == cache_fua) {
|
||||||
payload = NULL;
|
payload = NULL;
|
||||||
} else {
|
|
||||||
srs_freep(payload);
|
|
||||||
}
|
}
|
||||||
|
srs_freep(payload);
|
||||||
using_cache = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtpRawPayload* SrsRtpPacket2::reuse_raw()
|
SrsRtpRawPayload* SrsRtpPacket2::reuse_raw()
|
||||||
{
|
{
|
||||||
using_cache = true;
|
|
||||||
payload = cache_raw;
|
payload = cache_raw;
|
||||||
return cache_raw;
|
return cache_raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtpFUAPayload2* SrsRtpPacket2::reuse_fua()
|
SrsRtpFUAPayload2* SrsRtpPacket2::reuse_fua()
|
||||||
{
|
{
|
||||||
using_cache = true;
|
|
||||||
payload = cache_fua;
|
payload = cache_fua;
|
||||||
return cache_fua;
|
return cache_fua;
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,6 @@ public:
|
||||||
private:
|
private:
|
||||||
SrsRtpRawPayload* cache_raw;
|
SrsRtpRawPayload* cache_raw;
|
||||||
SrsRtpFUAPayload2* cache_fua;
|
SrsRtpFUAPayload2* cache_fua;
|
||||||
bool using_cache;
|
|
||||||
int cache_payload;
|
int cache_payload;
|
||||||
public:
|
public:
|
||||||
SrsRtpPacket2();
|
SrsRtpPacket2();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue