diff options
author | Jb Evain <jb@evain.net> | 2016-05-13 02:07:09 +0300 |
---|---|---|
committer | Jb Evain <jb@evain.net> | 2016-05-13 02:07:09 +0300 |
commit | edd25f00efd279c63a99b6c7928302650dca39a4 (patch) | |
tree | c52ff1201ab2cffbf8fee4362a5a9751c05392dd /Mono.Cecil.Metadata | |
parent | 1e03c149f65397e7e494cfdc5c0af0104af6b741 (diff) | |
parent | 042bdd2432705ae4c682743ff9740550dee3bead (diff) |
Merge branch 'master' into lowermemuse
Diffstat (limited to 'Mono.Cecil.Metadata')
-rw-r--r-- | Mono.Cecil.Metadata/BlobHeap.cs | 3 | ||||
-rw-r--r-- | Mono.Cecil.Metadata/MetadataToken.cs | 9 | ||||
-rw-r--r-- | Mono.Cecil.Metadata/TokenType.cs | 1 | ||||
-rw-r--r-- | Mono.Cecil.Metadata/Utilities.cs | 8 |
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; } |