[Modify] Support &#xhhhh;
This commit is contained in:
parent
759df4f755
commit
47cfdcdc93
@ -185,6 +185,7 @@ namespace WebSocketSharp.Net
|
|||||||
// 1: Right after '&'
|
// 1: Right after '&'
|
||||||
// 2: Between '&' and ';' but no '#'
|
// 2: Between '&' and ';' but no '#'
|
||||||
// 3: '#' found after '&' and getting numbers
|
// 3: '#' found after '&' and getting numbers
|
||||||
|
// 4: 'x' found after "&#" and getting numbers
|
||||||
var state = 0;
|
var state = 0;
|
||||||
|
|
||||||
var reference = new StringBuilder ();
|
var reference = new StringBuilder ();
|
||||||
@ -264,12 +265,40 @@ namespace WebSocketSharp.Net
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c == 'x') {
|
||||||
|
state = reference.Length == 3 ? 4 : 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Char.IsDigit (c)) {
|
if (!Char.IsDigit (c)) {
|
||||||
state = 2;
|
state = 2;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
number = number * 10 + (c - '0');
|
number = number * 10 + (c - '0');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == 4) {
|
||||||
|
if (c == ';') {
|
||||||
|
if (reference.Length > 4 && number < 65536)
|
||||||
|
buff.Append ((char) number);
|
||||||
|
else
|
||||||
|
buff.Append (reference.ToString ());
|
||||||
|
|
||||||
|
reference.Length = 0;
|
||||||
|
state = 0;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = getNumber (c);
|
||||||
|
if (n == -1) {
|
||||||
|
state = 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
number = (number << 4) + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user