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:
authorash-lshift <ash@lshift.net>2014-09-04 17:03:41 +0400
committerAlan McGovern <alan@xamarin.com>2015-08-18 15:30:42 +0300
commit71f7cda39a0215ddf05ad332fff995b2bf2421a0 (patch)
treeb895387ea38381a5d7bc8847f251519a6addfb24 /mcs/class/WindowsBase
parent79b2dea837d2e12632c892388db7b931be5be48d (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.cs3
-rw-r--r--mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs14
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 ();
+ }
+ }
}
}