diff options
author | Jb Evain <jbevain@gmail.com> | 2011-10-27 18:55:29 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2011-10-27 18:55:29 +0400 |
commit | 2c2a311bdac229c3f2324895b9953c83324ce62a (patch) | |
tree | 0a1707ab3fc77c49d3f5f6f51628089ccffb1d19 /Mono.Cecil.Metadata/UserStringHeap.cs | |
parent | d8b4ce06e180970f805d0372cbac037b0d58dc90 (diff) |
revert last two experimentations
Diffstat (limited to 'Mono.Cecil.Metadata/UserStringHeap.cs')
-rw-r--r-- | Mono.Cecil.Metadata/UserStringHeap.cs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/Mono.Cecil.Metadata/UserStringHeap.cs b/Mono.Cecil.Metadata/UserStringHeap.cs index b33eea8..7046eff 100644 --- a/Mono.Cecil.Metadata/UserStringHeap.cs +++ b/Mono.Cecil.Metadata/UserStringHeap.cs @@ -26,33 +26,29 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -using Mono.Cecil.PE; - namespace Mono.Cecil.Metadata { sealed class UserStringHeap : StringHeap { - public UserStringHeap (Image image, uint offset, uint size) - : base (image, offset, size) + public UserStringHeap (byte [] data) + : base (data) { } protected override string ReadStringAt (uint index) { - return ReadAt (index, reader => { - uint length = (uint) (reader.ReadCompressedUInt32 () & ~1); - var data = reader.ReadBytes ((int) length); + int start = (int) index; - if (length < 1) - return string.Empty; + uint length = (uint) (data.ReadCompressedUInt32 (ref start) & ~1); + if (length < 1) + return string.Empty; - var chars = new char [length / 2]; + var chars = new char [length / 2]; - for (int i = 0, j = 0; i < length; i += 2) - chars [j++] = (char) (data [i] | (data [i + 1] << 8)); + for (int i = start, j = 0; i < start + length; i += 2) + chars [j++] = (char) (data [i] | (data [i + 1] << 8)); - return new string (chars); - }); + return new string (chars); } } } |