X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f14508f732018dfb8fbec8035d422c0ac73b666..02b51ae521db06ef12a3c2a37a5378a9f715e707:/src/common/sckaddr.cpp?ds=inline diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp index a988fca1a2..9e2b8682e7 100644 --- a/src/common/sckaddr.cpp +++ b/src/common/sckaddr.cpp @@ -46,8 +46,9 @@ #include "wx/private/socket.h" #include "wx/private/sckaddr.h" +#include + #ifdef __UNIX__ - #include #include #include #endif // __UNIX__ @@ -120,15 +121,29 @@ IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress) #endif // the _r functions need the extra buffer parameter but unfortunately its type -// differs between different systems +// differs between different systems and for the systems which use opaque +// structs for it (at least AIX and OpenBSD) it must be zero-filled before +// being passed to the system functions #ifdef HAVE_FUNC_GETHOSTBYNAME_R_3 - typedef hostent_data wxGethostBuf; + struct wxGethostBuf : hostent_data + { + wxGethostBuf() + { + memset(this, 0, sizeof(hostent_data)); + } + }; #else typedef char wxGethostBuf[1024]; #endif #ifdef HAVE_FUNC_GETSERVBYNAME_R_3 - typedef servent_data wxGetservBuf; + struct wxGetservBuf : servent_data + { + wxGethostBuf() + { + memset(this, 0, sizeof(servent_data)); + } + }; #else typedef char wxGetservBuf[1024]; #endif