diff options
Diffstat (limited to 'vendor/github.com/godbus/dbus/decoder.go')
-rw-r--r-- | vendor/github.com/godbus/dbus/decoder.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/vendor/github.com/godbus/dbus/decoder.go b/vendor/github.com/godbus/dbus/decoder.go index ef50dca..5c27d3b 100644 --- a/vendor/github.com/godbus/dbus/decoder.go +++ b/vendor/github.com/godbus/dbus/decoder.go | |||
@@ -191,7 +191,14 @@ func (dec *decoder) decode(s string, depth int) interface{} { | |||
191 | length := dec.decode("u", depth).(uint32) | 191 | length := dec.decode("u", depth).(uint32) |
192 | v := reflect.MakeSlice(reflect.SliceOf(typeFor(s[1:])), 0, int(length)) | 192 | v := reflect.MakeSlice(reflect.SliceOf(typeFor(s[1:])), 0, int(length)) |
193 | // Even for empty arrays, the correct padding must be included | 193 | // Even for empty arrays, the correct padding must be included |
194 | dec.align(alignment(typeFor(s[1:]))) | 194 | align := alignment(typeFor(s[1:])) |
195 | if len(s) > 1 && s[1] == '(' { | ||
196 | //Special case for arrays of structs | ||
197 | //structs decode as a slice of interface{} values | ||
198 | //but the dbus alignment does not match this | ||
199 | align = 8 | ||
200 | } | ||
201 | dec.align(align) | ||
195 | spos := dec.pos | 202 | spos := dec.pos |
196 | for dec.pos < spos+int(length) { | 203 | for dec.pos < spos+int(length) { |
197 | ev := dec.decode(s[1:], depth+1) | 204 | ev := dec.decode(s[1:], depth+1) |