diff options
author | ash-lshift <ash@lshift.net> | 2014-09-04 17:03:41 +0400 |
---|---|---|
committer | Alan McGovern <alan@xamarin.com> | 2015-08-18 15:30:42 +0300 |
commit | 71f7cda39a0215ddf05ad332fff995b2bf2421a0 (patch) | |
tree | b895387ea38381a5d7bc8847f251519a6addfb24 /mcs/class/WindowsBase | |
parent | 79b2dea837d2e12632c892388db7b931be5be48d (diff) |
[WindowsBase] Fix PackagePart.GetRelationships for readonly files
Do not throw an exception when we are creating the PackageRelationship.
We should only do that if the user tries to add a new one.
Fixes https://bugzilla.novell.com/show_bug.cgi?id=675379
Diffstat (limited to 'mcs/class/WindowsBase')
-rw-r--r-- | mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs | 3 | ||||
-rw-r--r-- | mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs b/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs index d6586ab4d5e..06546720d6c 100644 --- a/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs +++ b/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs @@ -125,7 +125,8 @@ namespace System.IO.Packaging { private PackageRelationship CreateRelationship (Uri targetUri, TargetMode targetMode, string relationshipType, string id, bool loading) { - Package.CheckIsReadOnly (); + if (!loading) + Package.CheckIsReadOnly (); Check.TargetUri (targetUri); Check.RelationshipTypeIsValid (relationshipType); Check.IdIsValid (id); diff --git a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs index ad7eb968c3a..06ed852c52b 100644 --- a/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs +++ b/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs @@ -369,5 +369,19 @@ namespace MonoTests.System.IO.Packaging { {
Assert.IsFalse (package.PartExists(new Uri ("[Content_Types].xml", UriKind.Relative)));
}
+
+ [Test]
+ public void CheckCanGetRelationshipsIfReadOnly ()
+ {
+ using (var stream = new MemoryStream ()) {
+ var package = Package.Open (stream, FileMode.OpenOrCreate);
+ var part = package.CreatePart (uris [0], contentType);
+ part.CreateRelationship (part.Uri, TargetMode.Internal, "self");
+ package.Close ();
+ package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.Read);
+ part = package.GetPart (uris [0]);
+ part.GetRelationships ();
+ }
+ }
}
}
|