internal void DecodeBlock() {
// shift current chars to beginning.
if (pos > 0) {
if (pos < used) {
System.Array.Copy(m_buffer, pos, m_buffer, 0, used - pos);
}
used -= pos;
pos = 0;
}
int len = m_decoder.GetCharCount(rawBuffer, rawPos, rawUsed - rawPos);
int available = m_buffer.Length - used;
if (available < len) {
char[] newbuf = new char[m_buffer.Length + len];
System.Array.Copy(m_buffer, pos, newbuf, 0, used - pos);
m_buffer = newbuf;
}
used = pos + m_decoder.GetChars(rawBuffer, rawPos, rawUsed - rawPos, m_buffer, pos);
rawPos = rawUsed; // consumed the whole buffer!
}
internal static Decoder AutoDetectEncoding(byte[] buffer, ref int index, int length) {