Use realloc in copy assignment operator

This commit is contained in:
dijunkun
2023-12-22 14:12:56 +08:00
parent 82dafa9782
commit d6cd6a8099

View File

@@ -39,8 +39,12 @@ RtpPacket::RtpPacket() : buffer_(new uint8_t[DEFAULT_MTU]), size_(DEFAULT_MTU) {
RtpPacket::RtpPacket(const uint8_t *buffer, size_t size) { RtpPacket::RtpPacket(const uint8_t *buffer, size_t size) {
if (size > 0) { if (size > 0) {
buffer_ = new uint8_t[size]; buffer_ = (uint8_t *)malloc(size);
if (NULL == buffer_) {
LOG_ERROR("Malloc failed");
} else {
memcpy(buffer_, buffer, size); memcpy(buffer_, buffer, size);
}
size_ = size; size_ = size;
// TryToDecodeH264RtpPacket(buffer_); // TryToDecodeH264RtpPacket(buffer_);
@@ -49,8 +53,12 @@ RtpPacket::RtpPacket(const uint8_t *buffer, size_t size) {
RtpPacket::RtpPacket(const RtpPacket &rtp_packet) { RtpPacket::RtpPacket(const RtpPacket &rtp_packet) {
if (rtp_packet.size_ > 0) { if (rtp_packet.size_ > 0) {
buffer_ = new uint8_t[rtp_packet.size_]; buffer_ = (uint8_t *)malloc(rtp_packet.size_);
if (NULL == buffer_) {
LOG_ERROR("Malloc failed");
} else {
memcpy(buffer_, rtp_packet.buffer_, rtp_packet.size_); memcpy(buffer_, rtp_packet.buffer_, rtp_packet.size_);
}
size_ = rtp_packet.size_; size_ = rtp_packet.size_;
// TryToDecodeH264RtpPacket(buffer_); // TryToDecodeH264RtpPacket(buffer_);
@@ -66,13 +74,24 @@ RtpPacket::RtpPacket(RtpPacket &&rtp_packet)
// TryToDecodeH264RtpPacket(buffer_); // TryToDecodeH264RtpPacket(buffer_);
} }
// RtpPacket &RtpPacket::operator=(const RtpPacket &rtp_packet) {
// if (&rtp_packet != this) {
// if (buffer_) {
// delete[] buffer_;
// buffer_ = nullptr;
// }
// buffer_ = new uint8_t[rtp_packet.size_];
// memcpy(buffer_, rtp_packet.buffer_, rtp_packet.size_);
// size_ = rtp_packet.size_;
// // TryToDecodeH264RtpPacket(buffer_);
// }
// return *this;
// }
RtpPacket &RtpPacket::operator=(const RtpPacket &rtp_packet) { RtpPacket &RtpPacket::operator=(const RtpPacket &rtp_packet) {
if (&rtp_packet != this) { if (&rtp_packet != this) {
if (buffer_) { buffer_ = (uint8_t *)realloc(buffer_, rtp_packet.size_);
delete[] buffer_;
buffer_ = nullptr;
}
buffer_ = new uint8_t[rtp_packet.size_];
memcpy(buffer_, rtp_packet.buffer_, rtp_packet.size_); memcpy(buffer_, rtp_packet.buffer_, rtp_packet.size_);
size_ = rtp_packet.size_; size_ = rtp_packet.size_;
@@ -95,13 +114,13 @@ RtpPacket &RtpPacket::operator=(RtpPacket &&rtp_packet) {
RtpPacket::~RtpPacket() { RtpPacket::~RtpPacket() {
if (buffer_) { if (buffer_) {
delete[] buffer_; free(buffer_);
buffer_ = nullptr; buffer_ = nullptr;
} }
size_ = 0; size_ = 0;
if (extension_data_) { if (extension_data_) {
delete[] extension_data_; free(extension_data_);
extension_data_ = nullptr; extension_data_ = nullptr;
} }
extension_len_ = 0; extension_len_ = 0;