if (this.buffer != -1) {
int c = this.buffer;
this.buffer = -1;
return c;
}
int c = in.read();
if (c != '\\") return c;
int next = in.read();
if (next != 'u" ) { // This is not a Unicode escape
this.buffer = next;
return c;
}
// Read next 4 hex digits
// If the next four chars do not make a valid hex digit
// this is not a valid .java file.
StringBuffer sb = new StringBuffer();
sb.append((char) in.read());
sb.append((char) in.read());
sb.append((char) in.read());
sb.append((char) in.read());
String hex = sb.toString();
try {
return Integer.valueOf(hex, 16).intValue();
}
catch (NumberFormatException ex) {
throw new IOException("Bad Unicode escape: \\u" + hex);
}