Skip to content

Commit

Permalink
Fixes exceptions when ToC is empty.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeobrien committed May 10, 2016
1 parent ddc145e commit 0c5ea9d
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions src/TDMSReader/File.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ private static void LoadChannels(IDictionary<string, Group> groups, IEnumerable<
var prevMetaDataLookup = new Dictionary<string, Dictionary<string, Reader.Metadata>>();
foreach (var segment in segments)
{
if (!(segment.TableOfContents.ContainsNewObjects ||
segment.TableOfContents.HasDaqMxData ||
segment.TableOfContents.HasMetaData ||
segment.TableOfContents.HasRawData)) {
continue;
}
var metadatas = reader.ReadMetadata(segment);
long rawDataSize = 0;
long nextOffset = segment.RawDataOffset;
Expand All @@ -87,17 +93,20 @@ private static void LoadChannels(IDictionary<string, Group> groups, IEnumerable<
if (m.RawData.Count == 0 && m.Path.Length > 1)
{
// apply previous metadata if available
var prevMetaData = prevMetaDataLookup[m.Path[0]][m.Path[1]];
if (prevMetaData != null)
if (prevMetaDataLookup.ContainsKey(m.Path[0]) && prevMetaDataLookup[m.Path[0]].ContainsKey(m.Path[1]))
{
m.RawData.Count = segment.TableOfContents.HasRawData ? prevMetaData.RawData.Count : 0;
m.RawData.DataType = prevMetaData.RawData.DataType;
m.RawData.ClrDataType = prevMetaData.RawData.ClrDataType;
m.RawData.Offset = segment.RawDataOffset + rawDataSize;
m.RawData.IsInterleaved = prevMetaData.RawData.IsInterleaved;
m.RawData.InterleaveStride = prevMetaData.RawData.InterleaveStride;
m.RawData.Size = prevMetaData.RawData.Size;
m.RawData.Dimension = prevMetaData.RawData.Dimension;
var prevMetaData = prevMetaDataLookup[m.Path[0]][m.Path[1]];
if (prevMetaData != null)
{
m.RawData.Count = segment.TableOfContents.HasRawData ? prevMetaData.RawData.Count : 0;
m.RawData.DataType = prevMetaData.RawData.DataType;
m.RawData.ClrDataType = prevMetaData.RawData.ClrDataType;
m.RawData.Offset = segment.RawDataOffset + rawDataSize;
m.RawData.IsInterleaved = prevMetaData.RawData.IsInterleaved;
m.RawData.InterleaveStride = prevMetaData.RawData.InterleaveStride;
m.RawData.Size = prevMetaData.RawData.Size;
m.RawData.Dimension = prevMetaData.RawData.Dimension;
}
}
}
if (m.RawData.IsInterleaved && segment.NextSegmentOffset <= 0)
Expand Down

1 comment on commit 0c5ea9d

@mikeobrien
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TeamCity TDMS Reader :: Deploy Build 3.0.21.0 outcome was SUCCESS
Summary: Tests passed: 42, ignored: 2 Build time: 00:01:17

Please sign in to comment.