if (substring) { int buflen = strlen(buf); PR_ASSERT(substring[buflen] > 0); substringBordersSeparator = (substring[buflen] == '\0' || substring[buflen] == ';'); }  if (!substring || !substringBordersSeparator)
if (!substring)
pref_addChild(PLHashEntry *he, int i, void *arg){	PrefChildIter* pcs = (PrefChildIter*) arg;	if ( PL_strncmp((char*)he->key, pcs->parent, strlen(pcs->parent)) == 0 )	{		char buf[512];		char* nextdelim;		PRUint32 parentlen = strlen(pcs->parent);		char* substring;		PRBool substringBordersSeparator = PR_FALSE;		PL_strncpy(buf, (char*)he->key, PR_MIN(512, strlen((char*)he->key) + 1));		nextdelim = buf + parentlen;		if (parentlen < PL_strlen(buf))		{			/* Find the next delimiter if any and truncate the string there */			nextdelim = strstr(nextdelim, ".");			if (nextdelim)				*nextdelim = '\0';		}		substring = strstr(pcs->childList, buf);		if (substring)		{			int buflen = strlen(buf);			PR_ASSERT(substring[buflen] > 0);			substringBordersSeparator = (substring[buflen] == '\0' || substring[buflen] == ';');		}		if (!substring || !substringBordersSeparator)		{			unsigned int newsize = strlen(pcs->childList) + strlen(buf) + 2;			if (newsize > pcs->bufsize)			{				pcs->bufsize *= 3;				pcs->childList = (char*) realloc(pcs->childList, sizeof(char) * pcs->bufsize);				if (!pcs->childList)					return HT_ENUMERATE_STOP;			}			PL_strcat(pcs->childList, buf);			PL_strcat(pcs->childList, ";");		}	}	return 0;}