diff options
author | Henric Müller <hemuller@microsoft.com> | 2016-10-05 15:43:06 +0300 |
---|---|---|
committer | Henric Müller <hemuller@microsoft.com> | 2016-10-11 14:25:48 +0300 |
commit | fd76523f6a33845d62ec51c95ef9e5054c8939c6 (patch) | |
tree | be0e3f8283e5ceed4edfb54fbb1ca24dc71683d6 /mcs/class/WindowsBase | |
parent | 6676f790a8959d9e926181da796e7a3943822d1f (diff) |
Making sure stream is closed when exception is thrown
Stream will never be closed if we throw exception in Open
which leads to file being locked in Windows and that we
leak file handles.
Diffstat (limited to 'mcs/class/WindowsBase')
-rwxr-xr-x[-rw-r--r--] | mcs/class/WindowsBase/System.IO.Packaging/Package.cs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mcs/class/WindowsBase/System.IO.Packaging/Package.cs b/mcs/class/WindowsBase/System.IO.Packaging/Package.cs index e4b4ae11d2a..002d5921baf 100644..100755 --- a/mcs/class/WindowsBase/System.IO.Packaging/Package.cs +++ b/mcs/class/WindowsBase/System.IO.Packaging/Package.cs @@ -404,7 +404,12 @@ namespace System.IO.Packaging { throw new FileFormatException ("Stream length cannot be zero with FileMode.Open"); Stream s = File.Open (path, packageMode, packageAccess, packageShare); - return Open (s, packageMode, packageAccess, true); + try { + return Open (s, packageMode, packageAccess, true); + } catch { + s.Close (); + throw; + } } static Package OpenCore (Stream stream, FileMode packageMode, FileAccess packageAccess, bool ownsStream) |