diff --git a/src/Arduino_10BASE_T1S_UDP.cpp b/src/Arduino_10BASE_T1S_UDP.cpp index ba22041..a238169 100644 --- a/src/Arduino_10BASE_T1S_UDP.cpp +++ b/src/Arduino_10BASE_T1S_UDP.cpp @@ -186,11 +186,7 @@ void Arduino_10BASE_T1S_UDP::flush() { /* Drop packet from receive buffer. */ if (_rx_pkt_list.size()) - { - auto const rx_pkt = _rx_pkt_list.front(); _rx_pkt_list.pop_front(); - delete rx_pkt; - } } IPAddress Arduino_10BASE_T1S_UDP::remoteIP() @@ -220,7 +216,7 @@ void Arduino_10BASE_T1S_UDP::onUdpRawRecv(struct udp_pcb *pcb, struct pbuf *p, c auto const remote_port = port; /* Create UDP object. */ - auto const rx_pkt = new UdpRxPacket( + auto const rx_pkt = std::make_shared( remote_ip, remote_port, (uint8_t *)p->payload, diff --git a/src/Arduino_10BASE_T1S_UDP.h b/src/Arduino_10BASE_T1S_UDP.h index 6ca412b..e0010b0 100644 --- a/src/Arduino_10BASE_T1S_UDP.h +++ b/src/Arduino_10BASE_T1S_UDP.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,8 @@ class Arduino_10BASE_T1S_UDP : public UDP std::copy(p_data, p_data + data_len, std::back_inserter(_rx_data)); } + typedef std::shared_ptr SharedPtr; + IPAddress remoteIP() const { return _remote_ip; } uint16_t remotePort() const { return _remote_port; } size_t totalSize() const { return _rx_data_len; } @@ -135,5 +138,5 @@ class Arduino_10BASE_T1S_UDP : public UDP return _rx_data.front(); } }; - std::list _rx_pkt_list; + std::list _rx_pkt_list; };