private void RegisterConsumedCharacters(long characters, bool inEntityReference)
{
Debug.Assert(characters >= 0);
if (_maxCharactersInDocument > 0)
{
long newCharactersInDocument = _charactersInDocument + characters;
if (newCharactersInDocument < _charactersInDocument)
{
// Integer overflow while counting
ThrowWithoutLineInfo(SR.Xml_LimitExceeded, "MaxCharactersInDocument");
}
else
{
_charactersInDocument = newCharactersInDocument;
}
if (_charactersInDocument > _maxCharactersInDocument)
{
// The limit was exceeded for the total number of characters in the document
ThrowWithoutLineInfo(SR.Xml_LimitExceeded, "MaxCharactersInDocument");
}
}
if (_maxCharactersFromEntities > 0 && inEntityReference)
{
long newCharactersFromEntities = _charactersFromEntities + characters;
if (newCharactersFromEntities < _charactersFromEntities)
{
// Integer overflow while counting
ThrowWithoutLineInfo(SR.Xml_LimitExceeded, "MaxCharactersFromEntities");
}
else
{
_charactersFromEntities = newCharactersFromEntities;
}
if (_charactersFromEntities > _maxCharactersFromEntities)
{
// The limit was exceeded for the number of characters from entities
ThrowWithoutLineInfo(SR.Xml_LimitExceeded, "MaxCharactersFromEntities");
}
}
}