private static NbtDocument Parse( ReadOnlyMemory <byte> data, NbtOptions options, byte[]?extraRentedBytes, out int bytesConsumed) { ReadOnlySpan <byte> dataSpan = data.Span; var database = new MetadataDb(data.Length); var stack = new ByteStack <ContainerFrame>(NbtOptions.DefaultMaxDepth, clearOnReturn: false); var readerState = new NbtReaderState(options); var reader = new NbtReader(dataSpan, isFinalBlock: true, readerState); try { Parse(ref reader, ref database, ref stack); bytesConsumed = (int)reader.BytesConsumed; } catch { database.Dispose(); throw; } finally { readerState.Dispose(); stack.Dispose(); } return(new NbtDocument(data, options, database, extraRentedBytes, isDisposable: true)); }
public void Dispose() { _containerInfoStack.Dispose(); }