Maybe you could write a regression test for this function?
Rein Klazes wrote:
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.
--- 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) {