[openbeosnetteam] Re: Fix for resolving host names

  • From: "Waldemar Kornewald" <Waldemar.Kornewald@xxxxxx>
  • To: "OpenBeOS Networking" <openbeosnetteam@xxxxxxxxxxxxx>
  • Date: Mon, 2 Feb 2004 15:52:56 +0100

> >I would say no.
> >
> >Where is h_errno implemented?
> >
> >It is defined as external to gethostnamadr.c and it is defined as 
> >
> >extern int h_errno;
> >
> >not 
> >extern int * h_errno;
> 
> If this were true the malloc() call wouldn't compile.  h_errno is
> actually #defined in netdb.h (i believe) as a pointer variable...

Ouch!!!
I thought that I fixed this long ago. There was a problem with the h_errno 
stuff. It is #defined to be a function _h_errnop() or so. On the other hand it 
is a pointer that to TLS memory (if I remember correctly...).
To solve the problem you should try to put an
#undef h_errno
before every h_errno declaration
extern int h_errno.
Otherwise it gets replaced by _h_errnop() and you try to set the return value 
of that function instead of the variable itself. This of course fails.
In compat.c I also made a mistake and put it AFTER the declaration! Sorry.
h_errno is defined in res_query.c. IMHO, it should be moved into compat.c. What 
do you think?

Waldemar

Other related posts: