summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs')
-rw-r--r--src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs b/src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs
index 2cbd14f734..284cd927dc 100644
--- a/src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs
+++ b/src/mscorlib/src/System/IO/PinnedBufferMemoryStream.cs
@@ -13,19 +13,21 @@
**
**
===========================================================*/
+
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Diagnostics.Contracts;
-namespace System.IO {
+namespace System.IO
+{
internal sealed unsafe class PinnedBufferMemoryStream : UnmanagedMemoryStream
{
private byte[] _array;
private GCHandle _pinningHandle;
// The new inheritance model requires a Critical default ctor since base (UnmanagedMemoryStream) has one
- private PinnedBufferMemoryStream():base(){}
+ private PinnedBufferMemoryStream() : base() { }
internal PinnedBufferMemoryStream(byte[] array)
{
@@ -33,7 +35,8 @@ namespace System.IO {
int len = array.Length;
// Handle 0 length byte arrays specially.
- if (len == 0) {
+ if (len == 0)
+ {
array = new byte[1];
len = 0;
}
@@ -42,7 +45,7 @@ namespace System.IO {
_pinningHandle = new GCHandle(array, GCHandleType.Pinned);
// Now the byte[] is pinned for the lifetime of this instance.
// But I also need to get a pointer to that block of memory...
- fixed(byte* ptr = &_array[0])
+ fixed (byte* ptr = &_array[0])
Initialize(ptr, len, len, FileAccess.Read);
}
@@ -53,14 +56,16 @@ namespace System.IO {
protected override void Dispose(bool disposing)
{
- if (_isOpen) {
+ if (_isOpen)
+ {
_pinningHandle.Free();
_isOpen = false;
}
#if _DEBUG
// To help track down lifetime issues on checked builds, force
//a full GC here.
- if (disposing) {
+ if (disposing)
+ {
GC.Collect();
GC.WaitForPendingFinalizers();
}