hi, In the newsgroup someone reported a crash in gethostbyname() when the application called it with a null parameter. msdn says about this: | If null is provided in the name parameter, the returned string is | the same as the string returned by a successful gethostname | function call. gethostbyname does not return a string, but I think this it what they meant to say. I have tested gethostbyname under Win2K to do this. Changelog: dlls/winsock : socket.c async.c _ws_gethostbyname() and WSAAsyncGetHostByName() when called with a null name, should use the name returned by gethostname(). Rein. -- Rein Klazes rklazes@xs4all.nl
--- wine/dlls/winsock/socket.c 2003-08-31 10:00:10.000000000 +0200 +++ mywine/dlls/winsock/socket.c 2003-08-31 09:59:16.000000000 +0200 @@ -2903,6 +2903,16 @@ int ebufsize=1024; struct hostent hostentry; int locerr = ENOBUFS; +#endif + char buf[100]; + if( !name) { + name = buf; + if( gethostname( buf, 100) == -1) { + SetLastError( WSAENOBUFS); /* appropriate ? */ + return retval; + } + } +#ifdef HAVE_LINUX_GETHOSTBYNAME_R_6 host = NULL; extrabuf=HeapAlloc(GetProcessHeap(),0,ebufsize) ; while(extrabuf) { --- wine/dlls/winsock/async.c 2003-08-31 10:00:10.000000000 +0200 +++ mywine/dlls/winsock/async.c 2003-08-31 09:47:31.000000000 +0200 @@ -402,6 +402,16 @@ int ebufsize=1024; struct hostent hostentry; int locerr = ENOBUFS; +#endif + char buf[100]; + if( !(aq->host_name)) { + aq->host_name = buf; + if( gethostname( buf, 100) == -1) { + fail = WSAENOBUFS; /* appropriate ? */ + break; + } + } +#ifdef HAVE_LINUX_GETHOSTBYNAME_R_6 he = NULL; extrabuf=HeapAlloc(GetProcessHeap(),0,ebufsize) ; while(extrabuf) {