private void RemoveLastEndTagFromBuffer(HtmlTag endTag)
{
int bufferItemCount = _buffer.Count;
if (bufferItemCount == 0)
{
return;
}
int lastEndTagBeginAngleBracketIndex = _buffer.LastIndexOf("</");
if (lastEndTagBeginAngleBracketIndex != -1)
{
string lastEndTagName = _buffer[lastEndTagBeginAngleBracketIndex + 1];
if (lastEndTagName.IgnoreCaseEquals(endTag.NameInLowercase))
{
int lastEndTagEndAngleBracketIndex = _buffer.IndexOf(">", lastEndTagBeginAngleBracketIndex);
if (lastEndTagEndAngleBracketIndex != -1)
{
int lastBufferItemIndex = bufferItemCount - 1;
bool noMoreContent = true;
if (lastEndTagEndAngleBracketIndex != lastBufferItemIndex)
{
for (int bufferItemIndex = lastEndTagEndAngleBracketIndex + 1;
bufferItemIndex < bufferItemCount;
bufferItemIndex++)
{
if (!string.IsNullOrWhiteSpace(_buffer[bufferItemIndex]))
{
noMoreContent = false;
break;
}
}
}
if (noMoreContent)
{
int endTagLength = lastEndTagEndAngleBracketIndex - lastEndTagBeginAngleBracketIndex + 1;
_buffer.RemoveRange(lastEndTagBeginAngleBracketIndex, endTagLength);
}
}
}
}
}