This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygwin 1.3.17-1 gethostbyname() leak

On Tue, 10 Dec 2002, Noel Gordon wrote:

> Anyone else confirm that the following program compiled under
> gcc 3.2, cygwin 1.3.17-1, on Win2k leaks memory?
> /*-----------------------------------------------------------*/
> #include <netdb.h>
> #include <stdio.h>
> int main()
> {
>   struct hostent *host;
>   while ( 1 )
>   {
>     if ( ( host = gethostbyname( "localhost" ) ) != NULL )
>       printf( "gethostbyname(): %s\n", host->h_name );
>   }
> }


>From :

      The gethostbyaddr() and gethostbyname() functions *may* return
      pointers to static data, which may be overwritten by subsequent
      calls to any of these functions.

The "may" above (emphasis is mine) means that the implementation is free
to malloc a data structure and require the user to free it.  Since you
don't free the returned data structure in your program, it's quite
possible that there's a leak.  Also, Cygwin uses the gethostbyname from
wsock32.dll, which may have different implementations on different
systems.  Thus, your best bet is to look up gethostbyname on MSDN for
implementation details.
      |\      _,,,---,,_
ZZZzz /,`.-'`'    -.  ;-;;,_
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Water molecules expand as they grow warmer" (C) Popular Science, Oct'02, p.51

Unsubscribe info:
Bug reporting:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]