Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DecodeEmbeddedPortablePdbDebugDirectoryData()

static unsafe NativeHeapMemoryBlock System.Reflection.PortableExecutable.PEReader.DecodeEmbeddedPortablePdbDebugDirectoryData ( AbstractMemoryBlock block)
inlinestaticpackage

Definition at line 566 of file PEReader.cs.

567 {
568 BlobReader reader = block.GetReader();
569 if (reader.ReadUInt32() != 1111773261)
570 {
571 throw new BadImageFormatException(System.SR.UnexpectedEmbeddedPortablePdbDataSignature);
572 }
573 int num = reader.ReadInt32();
574 NativeHeapMemoryBlock nativeHeapMemoryBlock;
575 try
576 {
577 nativeHeapMemoryBlock = new NativeHeapMemoryBlock(num);
578 }
579 catch
580 {
581 throw new BadImageFormatException(System.SR.DataTooBig);
582 }
583 bool flag = false;
584 try
585 {
587 DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress, leaveOpen: true);
588 if (num > 0)
589 {
590 int num2;
591 try
592 {
593 num2 = deflateStream.TryReadAll(new Span<byte>(nativeHeapMemoryBlock.Pointer, nativeHeapMemoryBlock.Size));
594 }
595 catch (Exception ex)
596 {
597 throw new BadImageFormatException(ex.Message, ex.InnerException);
598 }
599 if (num2 != nativeHeapMemoryBlock.Size)
600 {
601 throw new BadImageFormatException(System.SR.SizeMismatch);
602 }
603 }
604 if (deflateStream.ReadByte() != -1)
605 {
606 throw new BadImageFormatException(System.SR.SizeMismatch);
607 }
608 flag = true;
609 }
610 finally
611 {
612 if (!flag)
613 {
614 nativeHeapMemoryBlock.Dispose();
615 }
616 }
617 return nativeHeapMemoryBlock;
618 }
static string DataTooBig
Definition SR.cs:230
static string SizeMismatch
Definition SR.cs:228
static string UnexpectedEmbeddedPortablePdbDataSignature
Definition SR.cs:160
Definition SR.cs:7

References System.Reflection.Metadata.BlobReader.CurrentPointer, System.SR.DataTooBig, System.Reflection.Internal.NativeHeapMemoryBlock.Dispose(), System.Reflection.Internal.AbstractMemoryBlock.GetReader(), System.Exception.InnerException, System.Exception.Message, System.Reflection.Internal.NativeHeapMemoryBlock.Pointer, System.IO.Compression.DeflateStream.ReadByte(), System.Reflection.Metadata.BlobReader.ReadInt32(), System.Reflection.Metadata.BlobReader.ReadUInt32(), System.Reflection.Metadata.BlobReader.RemainingBytes, System.Reflection.Internal.NativeHeapMemoryBlock.Size, System.SR.SizeMismatch, System.stream, and System.SR.UnexpectedEmbeddedPortablePdbDataSignature.

Referenced by System.Reflection.PortableExecutable.PEReader.ReadEmbeddedPortablePdbDebugDirectoryData().