PRUint32 j1 = PL_strlen(s1); PRUint32 j2 = PL_strlen(s2);
j1 = PL_strlen(s1); j2 = PL_strlen(s2);
msg_extract_Header_address_names(const char *line){	char *names = 0;	char *addrs = 0;	char *result, *s1, *s2, *out;	PRUint32 i, size = 0;	int status = msg_parse_Header_addresses(line, &names, &addrs);	if (status <= 0)		return 0;	s1 = names;	s2 = addrs;	for (i = 0; (int)i < status; i++)	{		PRUint32 j1 = PL_strlen(s1);		PRUint32 j2 = PL_strlen(s2);		s1 += j1 + 1;		s2 += j2 + 1;		size += (j1 ? j1 : j2) + 2;	}	result = (char *)PR_Malloc(size + 1);	if (!result)	{		PR_Free(names);		PR_Free(addrs);		return 0;	}	out = result;	s1 = names;	s2 = addrs;	for (i = 0; (int)i < status; i++)	{		PRUint32 j1 = PL_strlen(s1);		PRUint32 j2 = PL_strlen(s2);		if (j1)		{			nsCRT::memcpy(out, s1, j1);			out += j1;		}		else		{			nsCRT::memcpy(out, s2, j2);			out += j2;		}		if ((int)(i+1) < status)		{			*out++ = ',';			*out++ = ' ';		}		s1 += j1 + 1;		s2 += j2 + 1;	}	*out = 0;	PR_Free(names);	PR_Free(addrs);	return result;}