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

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jb@evain.net>2016-05-13 02:07:09 +0300
committerJb Evain <jb@evain.net>2016-05-13 02:07:09 +0300
commitedd25f00efd279c63a99b6c7928302650dca39a4 (patch)
treec52ff1201ab2cffbf8fee4362a5a9751c05392dd /Mono.Cecil.Metadata
parent1e03c149f65397e7e494cfdc5c0af0104af6b741 (diff)
parent042bdd2432705ae4c682743ff9740550dee3bead (diff)
Merge branch 'master' into lowermemuse
Diffstat (limited to 'Mono.Cecil.Metadata')
-rw-r--r--Mono.Cecil.Metadata/BlobHeap.cs3
-rw-r--r--Mono.Cecil.Metadata/MetadataToken.cs9
-rw-r--r--Mono.Cecil.Metadata/TokenType.cs1
-rw-r--r--Mono.Cecil.Metadata/Utilities.cs8
4 files changed, 20 insertions, 1 deletions
diff --git a/Mono.Cecil.Metadata/BlobHeap.cs b/Mono.Cecil.Metadata/BlobHeap.cs
index 407702c..67618c0 100644
--- a/Mono.Cecil.Metadata/BlobHeap.cs
+++ b/Mono.Cecil.Metadata/BlobHeap.cs
@@ -27,6 +27,9 @@ namespace Mono.Cecil.Metadata {
int position = (int) index;
int length = (int) data.ReadCompressedUInt32 (ref position);
+ if (length > data.Length - position)
+ return Empty<byte>.Array;
+
var buffer = new byte [length];
Buffer.BlockCopy (data, position, buffer, 0, length);
diff --git a/Mono.Cecil.Metadata/MetadataToken.cs b/Mono.Cecil.Metadata/MetadataToken.cs
index 8cc10ea..a8b712e 100644
--- a/Mono.Cecil.Metadata/MetadataToken.cs
+++ b/Mono.Cecil.Metadata/MetadataToken.cs
@@ -8,9 +8,11 @@
// Licensed under the MIT/X11 license.
//
+using System;
+
namespace Mono.Cecil {
- public struct MetadataToken {
+ public struct MetadataToken : IEquatable<MetadataToken> {
readonly uint token;
@@ -59,6 +61,11 @@ namespace Mono.Cecil {
return (int) token;
}
+ public bool Equals (MetadataToken other)
+ {
+ return other.token == token;
+ }
+
public override bool Equals (object obj)
{
if (obj is MetadataToken) {
diff --git a/Mono.Cecil.Metadata/TokenType.cs b/Mono.Cecil.Metadata/TokenType.cs
index e80d44c..09395fd 100644
--- a/Mono.Cecil.Metadata/TokenType.cs
+++ b/Mono.Cecil.Metadata/TokenType.cs
@@ -33,6 +33,7 @@ namespace Mono.Cecil {
ManifestResource = 0x28000000,
GenericParam = 0x2a000000,
MethodSpec = 0x2b000000,
+ GenericParamConstraint = 0x2c000000,
String = 0x70000000,
}
}
diff --git a/Mono.Cecil.Metadata/Utilities.cs b/Mono.Cecil.Metadata/Utilities.cs
index cf6ba72..51f1c35 100644
--- a/Mono.Cecil.Metadata/Utilities.cs
+++ b/Mono.Cecil.Metadata/Utilities.cs
@@ -108,6 +108,10 @@ namespace Mono.Cecil {
token_type = TokenType.ManifestResource; goto ret;
case 19:
token_type = TokenType.GenericParam; goto ret;
+ case 20:
+ token_type = TokenType.GenericParamConstraint; goto ret;
+ case 21:
+ token_type = TokenType.MethodSpec; goto ret;
default:
goto exit;
}
@@ -307,6 +311,10 @@ namespace Mono.Cecil {
return ret | 18;
case TokenType.GenericParam:
return ret | 19;
+ case TokenType.GenericParamConstraint:
+ return ret | 20;
+ case TokenType.MethodSpec:
+ return ret | 21;
default:
goto exit;
}