Hi Marko, On Thu, 17 Sep 2020 at 07:34, Marko Hrastovec <marko.hrasto...@gmail.com> wrote: > > Hi, > > examples in freeaddrinfo.3 have a memory leak, which is replicated in many > real world programs copying an example from manual pages. The two examples > should have different order of lines, which is done in the following patch. > > diff --git a/man3/getaddrinfo.3 b/man3/getaddrinfo.3 > index c9a4b3e43..4d383bea0 100644 > --- a/man3/getaddrinfo.3 > +++ b/man3/getaddrinfo.3 > @@ -711,13 +711,13 @@ main(int argc, char *argv[]) > close(sfd); > } > > + freeaddrinfo(result); /* No longer needed */ > + > if (rp == NULL) { /* No address succeeded */ > fprintf(stderr, "Could not bind\en"); > exit(EXIT_FAILURE); > } > > - freeaddrinfo(result); /* No longer needed */ > - > /* Read datagrams and echo them back to sender */ > > for (;;) { > @@ -804,13 +804,13 @@ main(int argc, char *argv[]) > close(sfd); > } > > + freeaddrinfo(result); /* No longer needed */ > + > if (rp == NULL) { /* No address succeeded */ > fprintf(stderr, "Could not connect\en"); > exit(EXIT_FAILURE); > } > > - freeaddrinfo(result); /* No longer needed */ > - > /* Send remaining command\-line arguments as separate > datagrams, and read responses from server */ >
When you say "memory leak", do you mean that something like valgrind complains? I mean, strictly speaking, there is no memory leak that I can see that is fixed by that patch, since the if-branches that the freeaddrinfo() calls are shifted above terminates the process in each case. Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/