aboutsummaryrefslogtreecommitdiff
path: root/ares/inet_ntop.c
diff options
context:
space:
mode:
Diffstat (limited to 'ares/inet_ntop.c')
-rw-r--r--ares/inet_ntop.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/ares/inet_ntop.c b/ares/inet_ntop.c
index 74192c1a8..9902391d1 100644
--- a/ares/inet_ntop.c
+++ b/ares/inet_ntop.c
@@ -129,8 +129,12 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size)
* Keep this in mind if you think this function should have been coded
* to use pointer overlays. All the world's not a VAX.
*/
- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
- struct { int base, len; } best = { 0,0 }, cur = { 0,0 };
+ char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
+ char *tp;
+ struct {
+ long base;
+ long len;
+ } best, cur;
unsigned int words[NS_IN6ADDRSZ / NS_INT16SZ];
int i;
@@ -142,8 +146,12 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size)
memset(words, '\0', sizeof words);
for (i = 0; i < NS_IN6ADDRSZ; i++)
words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
+
best.base = -1;
cur.base = -1;
+ best.len = 0;
+ cur.len = 0;
+
for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
{
if (words[i] == 0)