if (IS_OK(c) || (c == HEX_ESCAPE && (pc1) && (pc2) &&
if (IS_OK(c) || (c == HEX_ESCAPE && !(forced) && (pc1) && (pc2) &&
nsURLEscape(const char* str, PRInt16 mask, nsCString &result){    if (!str) {        result = "";        return NS_OK;    }    int i = 0;    char* hexChars = "0123456789ABCDEF";    static const char CheckHexChars[] = "0123456789ABCDEFabcdef";    int len = PL_strlen(str);    register const unsigned char* src = (const unsigned char *) str;    src = (const unsigned char *) str;    char tempBuffer[100];    unsigned int tempBufferPos = 0;    char c1[] = " ";    char c2[] = " ";    char* const pc1 = c1;    char* const pc2 = c2;    for (i = 0; i < len; i++)    {      c1[0] = *(src+1);      if (*(src+1) == '\0')           c2[0] = '\0';      else          c2[0] = *(src+2);      unsigned char c = *src++;      /* if the char has not to be escaped or whatever follows % is          a valid escaped string, just copy the char */      if (IS_OK(c) || (c == HEX_ESCAPE && (pc1) && (pc2) &&         PL_strpbrk(pc1, CheckHexChars) != 0 &&           PL_strpbrk(pc2, CheckHexChars) != 0)) {		  tempBuffer[tempBufferPos++]=c;      }      else           /* do the escape magic */      {          tempBuffer[tempBufferPos++] = HEX_ESCAPE;          tempBuffer[tempBufferPos++] = hexChars[c >> 4];	/* high nibble */          tempBuffer[tempBufferPos++] = hexChars[c & 0x0f]; /* low nibble */      } 	        if(tempBufferPos >= sizeof(tempBuffer) - 4) 	  {          tempBuffer[tempBufferPos] = '\0';          result += tempBuffer;          tempBufferPos = 0; 	  }	} 	    tempBuffer[tempBufferPos] = '\0';    result += tempBuffer;    return NS_OK;}