From 381f77756dc6c6e15ca4b8fbda35c0f3e3cde26c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 19 Apr 2002 11:00:26 +0000 Subject: [PATCH] =?UTF-8?q?pack=5Fhostent=20does=20not=20handle=2064=20bit?= =?UTF-8?q?=20pointers=20correctly.=20A=20Bj=F8rn=20Reese=20patch.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/hostip.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/hostip.c b/lib/hostip.c index e3daab1ff..a085ece04 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -377,10 +377,12 @@ static struct hostent* pack_hostent(char* buf, struct hostent* orig) bufptr += len; /* we align on even 64bit boundaries for safety */ -#define MEMALIGN(x) (((unsigned long)(x)&0xfffffff8)+8) +#define MEMALIGN(x) ((x)+(8-(((unsigned long)(x))&0x7))) /* This must be aligned properly to work on many CPU architectures! */ - copy->h_aliases = (char**)MEMALIGN(bufptr); + bufptr = MEMALIGN(bufptr); + + copy->h_aliases = (char**)bufptr; /* Figure out how many aliases there are */ for (i = 0; orig->h_aliases[i] != NULL; ++i); @@ -402,7 +404,7 @@ static struct hostent* pack_hostent(char* buf, struct hostent* orig) copy->h_length = orig->h_length; /* align it for (at least) 32bit accesses */ - bufptr = (char *)MEMALIGN(bufptr); + bufptr = MEMALIGN(bufptr); copy->h_addr_list = (char**)bufptr;