diff -Naur openjdk-7.271_p01/jdk/src/solaris/native/java/net/net_util_md.c openjdk-7.271_p01-copy/jdk/src/solaris/native/java/net/net_util_md.c --- openjdk-7.271_p01/jdk/src/solaris/native/java/net/net_util_md.c 2020-10-15 21:59:39.539954972 -0400 +++ openjdk-7.271_p01-copy/jdk/src/solaris/native/java/net/net_util_md.c 2020-10-15 22:36:09.911943616 -0400 @@ -712,7 +712,7 @@ static struct localinterface *localifs = 0; static int localifsSize = 0; /* size of array */ -static int nifs = 0; /* number of entries used in array */ +static int nifs = -1; /* number of entries used in array */ /* not thread safe: make sure called once from one thread */ @@ -724,6 +724,10 @@ int index, x1, x2, x3; unsigned int u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,ua,ub,uc,ud,ue,uf; + if (nifs >= 0) + return ; + nifs = 0; + if ((f = fopen("/proc/net/if_inet6", "r")) == NULL) { return ; } @@ -752,7 +756,7 @@ localifs = (struct localinterface *) realloc ( localifs, sizeof (struct localinterface)* (localifsSize+5)); if (localifs == 0) { - nifs = 0; + nifs = -1; fclose (f); return; } @@ -775,9 +779,7 @@ static int getLocalScopeID (char *addr) { struct localinterface *lif; int i; - if (localifs == 0) { - initLocalIfs(); - } + initLocalIfs(); for (i=0, lif=localifs; ilocaladdr, 16) == 0) { return lif->index;