private unsafe void FindEndOfComponent(char* str, ref ushort idx, ushort end, char delim) { char c = c_DummyChar; ushort i = idx; for (; i < end; ++i) { c = str[i]; if (c == delim) { break; } else if (delim == '?' && c == '#' && (_syntax != null && _syntax.InFact(UriSyntaxFlags.MayHaveFragment))) { // this is a special case when deciding on Query/Fragment break; } } idx = i; }