diff --git a/components/net/sal_socket/socket/net_sockets.c b/components/net/sal_socket/socket/net_sockets.c index 8b2e3fe2fd8f6ee323fabf6f107ce4d90c544c5f..50f1446b0b9a5e9aab92787d235329ebd657e85b 100644 --- a/components/net/sal_socket/socket/net_sockets.c +++ b/components/net/sal_socket/socket/net_sockets.c @@ -236,10 +236,10 @@ int socket(int domain, int type, int protocol) } else { + rt_free(d->fnode); /* release fd */ fd_release(fd); rt_set_errno(-ENOMEM); - rt_free(d->fnode); return -1; } @@ -283,9 +283,9 @@ int closesocket(int s) error = -1; } + rt_free(d->fnode); /* socket has been closed, delete it from file system fd */ fd_release(s); - rt_free(d->fnode); return error; }