private bool HandleEntityEnd(bool inLiteral)
{
SaveParsingBuffer();
IDtdEntityInfo oldEntity;
if (!_readerAdapter.PopEntity(out oldEntity, out _currentEntityId))
{
return false;
}
LoadParsingBuffer();
if (oldEntity == null)
{
// external subset popped
Debug.Assert(!ParsingInternalSubset || _freeFloatingDtd);
Debug.Assert(_currentEntityId == 0);
if (_scanningFunction == ScanningFunction.ParamEntitySpace)
{
_scanningFunction = _savedScanningFunction;
}
return false;
}
if (oldEntity.IsExternal)
{
_externalEntitiesDepth--;
}
if (!inLiteral && _scanningFunction != ScanningFunction.ParamEntitySpace)
{
_savedScanningFunction = _scanningFunction;
_scanningFunction = ScanningFunction.ParamEntitySpace;
}
return true;
}