The buffer in ftp_pasv_verbose(), used for gethostbyaddr_r(), is now defined
authorDaniel Stenberg <daniel@haxx.se>
Fri, 4 Jan 2002 09:17:52 +0000 (09:17 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 4 Jan 2002 09:17:52 +0000 (09:17 +0000)
to become properly 8-byte aligned on 64-bit archs. Philip Gladstone reported.

lib/ftp.c

index 56449f6..0ac5d4d 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -861,13 +861,17 @@ ftp_pasv_verbose(struct connectdata *conn,
 #ifdef HAVE_INET_NTOA_R
   char ntoa_buf[64];
 #endif
-  char hostent_buf[9000];
+  /* The array size trick below is to make this a large chunk of memory
+     suitably 8-byte aligned on 64-bit platforms. This was thoughtfully
+     suggested by Philip Gladstone. */
+  long bigbuf[9000 / sizeof(long)];
 
 #if defined(HAVE_INET_ADDR)
   in_addr_t address;
 # if defined(HAVE_GETHOSTBYADDR_R)
   int h_errnop;
 # endif
+  char *hostent_buf = (char *)bigbuf; /* get a char * to the buffer */
 
   address = inet_addr(newhost);
 # ifdef HAVE_GETHOSTBYADDR_R