mirror of https://github.com/ARMmbed/mbed-os.git
Fix hard-fault when socket created using accept() is closed
When socket created using accept() is closed by calling the close() method, "delete this" is executed which triggers the destructor call on TCPSocket which in turn calls close() once again. Because _stack is already 0 this results in a hard-fault. Add a check that skips the rest of the close() method is the _stack is already 0.pull/8479/head
parent
6404d94dce
commit
50dd1eb950
|
@ -222,6 +222,7 @@ TEST_F(TestInternetSocket, getsockopt)
|
|||
TEST_F(TestInternetSocket, sigio)
|
||||
{
|
||||
callback_is_called = false;
|
||||
socket->open((NetworkStack *)&stack);
|
||||
socket->sigio(mbed::callback(my_callback));
|
||||
socket->close(); // Trigger event;
|
||||
EXPECT_EQ(callback_is_called, true);
|
||||
|
|
|
@ -56,6 +56,10 @@ nsapi_error_t InternetSocket::close()
|
|||
_lock.lock();
|
||||
|
||||
nsapi_error_t ret = NSAPI_ERROR_OK;
|
||||
if (!_stack) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (_socket) {
|
||||
_stack->socket_attach(_socket, 0, 0);
|
||||
nsapi_socket_t socket = _socket;
|
||||
|
|
Loading…
Reference in New Issue