Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenric Müller <hemuller@microsoft.com>2016-10-05 15:43:06 +0300
committerHenric Müller <hemuller@microsoft.com>2016-10-11 14:25:48 +0300
commitfd76523f6a33845d62ec51c95ef9e5054c8939c6 (patch)
treebe0e3f8283e5ceed4edfb54fbb1ca24dc71683d6 /mcs/class/WindowsBase
parent6676f790a8959d9e926181da796e7a3943822d1f (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.cs7
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)