View | Details | Raw Unified
Collapse All | Expand All

(-) file_not_specified_in_diff (+9 lines)
 Lines 244-254   UString decodeURI(ExecState *exec, UStri Link Here 
      }
      }
      // UTF-8 transform
      // UTF-8 transform
      const unsigned long replacementChar = 0xFFFD;
      unsigned long V;
      unsigned long V;
      if (n == 2) {
      if (n == 2) {
	unsigned long yyyyy = octets[0] & 0x1F;
	unsigned long yyyyy = octets[0] & 0x1F;
	unsigned long zzzzzz = octets[1] & 0x3F;
	unsigned long zzzzzz = octets[1] & 0x3F;
	V = (yyyyy << 6) | zzzzzz;
	V = (yyyyy << 6) | zzzzzz;
	// 2-byte sequence overlong for this value?
	if (V < 0xFF)
	  V = replacementChar;
	C = UChar((unsigned short)V);
	C = UChar((unsigned short)V);
      }
      }
      else if (n == 3) {
      else if (n == 3) {
 Lines 256-261   UString decodeURI(ExecState *exec, UStri Link Here 
	unsigned long yyyyyy = octets[1] & 0x3F;
	unsigned long yyyyyy = octets[1] & 0x3F;
	unsigned long zzzzzz = octets[2] & 0x3F;
	unsigned long zzzzzz = octets[2] & 0x3F;
	V = (xxxx << 12) | (yyyyyy << 6) | zzzzzz;
	V = (xxxx << 12) | (yyyyyy << 6) | zzzzzz;
	// 3-byte sequence overlong for this value,
	// an invalid value or UTF-16 surrogate?
	if (V < 0x800 || V == 0xFFFE || V == 0xFFFF ||
	    (V >= 0xD800 && V <= 0xDFFF))
	  V = replacementChar;
	C = UChar((unsigned short)V);
	C = UChar((unsigned short)V);
      }
      }
      else {
      else {