summaryrefslogtreecommitdiff
path: root/rrdformat/unmarshal_binary.go
diff options
context:
space:
mode:
Diffstat (limited to 'rrdformat/unmarshal_binary.go')
-rw-r--r--rrdformat/unmarshal_binary.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/rrdformat/unmarshal_binary.go b/rrdformat/unmarshal_binary.go
index bd4c005..67dc4ff 100644
--- a/rrdformat/unmarshal_binary.go
+++ b/rrdformat/unmarshal_binary.go
@@ -44,10 +44,16 @@ func (rrd *RRD) UnmarshalBinary(data []byte) error {
}
vals := make([]Value, val_cnt)
parsed.Values = vals
- for i := range parsed.RRADefs {
- parsed.RRADefs[i].Values = vals[:parsed.RRADefs[i].RowCnt*parsed.Header.DSCnt]
- vals = vals[parsed.RRADefs[i].RowCnt*parsed.Header.DSCnt:]
+ // set up some of pointers
+ for rra_i := range parsed.RRADefs {
+ parsed.RRADefs[rra_i].CDPPrep = &parsed.CDPPreps[rra_i]
+ parsed.RRADefs[rra_i].Database = make([][]Value, parsed.RRADefs[rra_i].RowCnt)
+ for row_i := 0; row_i < int(parsed.RRADefs[rra_i].RowCnt); row_i++ {
+ parsed.RRADefs[rra_i].Database[row_i] = vals[:parsed.Header.DSCnt]
+ vals = vals[parsed.Header.DSCnt:]
+ }
}
+
// resume decoding
var lastUpdatedPtr interface{}
switch parsed.Header.Version {