Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Codecs/Binary.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Expand Down Expand Up @@ -315,7 +315,7 @@ public Datamodel Decode(int encoding_version, string format, int format_version,
foreach (int attr_index in Enumerable.Range(0, Reader.ReadInt32()))
{
var name = ReadString_Raw();
var value = DecodeAttribute(dm);
var value = DecodeAttribute(dm, true);
if (prefix_elem == 0) // skip subsequent elements...are they considered "old versions"?
dm.PrefixAttributes[name] = value;
}
Expand Down Expand Up @@ -354,7 +354,7 @@ public Datamodel Decode(int encoding_version, string format, int format_version,
}
else
{
elem.Add(name, DecodeAttribute(dm));
elem.Add(name, DecodeAttribute(dm, false));
}
}
}
Expand All @@ -366,15 +366,15 @@ public Datamodel Decode(int encoding_version, string format, int format_version,
public object DeferredDecodeAttribute(Datamodel dm, long offset)
{
Reader.BaseStream.Seek(offset, SeekOrigin.Begin);
return DecodeAttribute(dm);
return DecodeAttribute(dm, false);
}

object DecodeAttribute(Datamodel dm)
object DecodeAttribute(Datamodel dm, bool prefix)
{
var type = IdToType(Reader.ReadByte());

if (!Datamodel.IsDatamodelArrayType(type))
return ReadValue(dm, type, EncodingVersion < 4);
return ReadValue(dm, type, EncodingVersion < 4 || prefix);
else
{
var count = Reader.ReadInt32();
Expand Down