From 0955c15181a7544ee56f881d3c6419b349390ec9 Mon Sep 17 00:00:00 2001 From: morkt Date: Sun, 14 Jun 2015 10:19:16 +0400 Subject: [PATCH] (StreamRegion): added leave_open argument to constructor. --- ArcFormats/ArcCommon.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ArcFormats/ArcCommon.cs b/ArcFormats/ArcCommon.cs index e1f23f65..c215eae6 100644 --- a/ArcFormats/ArcCommon.cs +++ b/ArcFormats/ArcCommon.cs @@ -196,13 +196,15 @@ namespace GameRes.Formats private Stream m_stream; private long m_begin; private long m_end; + private bool m_should_dispose; - public StreamRegion (Stream main, long offset, long length) + public StreamRegion (Stream main, long offset, long length, bool leave_open = false) { m_stream = main; m_begin = offset; m_end = Math.Min (offset + length, m_stream.Length); m_stream.Position = m_begin; + m_should_dispose = !leave_open; } public StreamRegion (Stream main, long offset) : this (main, offset, main.Length-offset) @@ -276,7 +278,8 @@ namespace GameRes.Formats { if (!m_disposed) { - m_stream.Dispose(); + if (m_should_dispose) + m_stream.Dispose(); m_disposed = true; base.Dispose (disposing); }