From cfd9889018821f960cbe94b4a73324763ca2a1c8 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 6 Jan 2013 18:46:18 +0100 Subject: [PATCH] Imported Ehternet memory-leak fix into sam --- hardware/arduino/sam/libraries/Ethernet/Dhcp.cpp | 1 + hardware/arduino/sam/libraries/Ethernet/Ethernet.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hardware/arduino/sam/libraries/Ethernet/Dhcp.cpp b/hardware/arduino/sam/libraries/Ethernet/Dhcp.cpp index e4d27f722..56d5b6951 100644 --- a/hardware/arduino/sam/libraries/Ethernet/Dhcp.cpp +++ b/hardware/arduino/sam/libraries/Ethernet/Dhcp.cpp @@ -43,6 +43,7 @@ int DhcpClass::request_DHCP_lease(){ _dhcpTransactionId = random(1UL, 2000UL); _dhcpInitialTransactionId = _dhcpTransactionId; + _dhcpUdpSocket.stop(); if (_dhcpUdpSocket.begin(DHCP_CLIENT_PORT) == 0) { // Couldn't get a socket diff --git a/hardware/arduino/sam/libraries/Ethernet/Ethernet.cpp b/hardware/arduino/sam/libraries/Ethernet/Ethernet.cpp index ac54fa9dd..c31a85f09 100644 --- a/hardware/arduino/sam/libraries/Ethernet/Ethernet.cpp +++ b/hardware/arduino/sam/libraries/Ethernet/Ethernet.cpp @@ -10,7 +10,9 @@ uint16_t EthernetClass::_server_port[MAX_SOCK_NUM] = { int EthernetClass::begin(uint8_t *mac_address) { - _dhcp = new DhcpClass(); + static DhcpClass s_dhcp; + _dhcp = &s_dhcp; + // Initialise the basic info W5100.init(); @@ -59,7 +61,6 @@ void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dn void EthernetClass::begin(uint8_t *mac, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet) { W5100.init(); - W5100.setMACAddress(mac); W5100.setIPAddress(local_ip._address); W5100.setGatewayIp(gateway._address);