File tree 2 files changed +6
-0
lines changed
2 files changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -177,6 +177,8 @@ func alignment(t reflect.Type) int {
177
177
return 4
178
178
case signatureType :
179
179
return 1
180
+ case interfacesType : // sometimes used for structs
181
+ return 8
180
182
}
181
183
switch t .Kind () {
182
184
case reflect .Uint8 :
Original file line number Diff line number Diff line change @@ -171,6 +171,8 @@ func (dec *decoder) decode(s string, depth int) interface{} {
171
171
panic (FormatError ("input exceeds container depth limit" ))
172
172
}
173
173
length := dec .decode ("u" , depth ).(uint32 )
174
+ // Even for empty maps, the correct padding must be included
175
+ dec .align (8 )
174
176
spos := dec .pos
175
177
for dec .pos < spos + int (length ) {
176
178
dec .align (8 )
@@ -188,6 +190,8 @@ func (dec *decoder) decode(s string, depth int) interface{} {
188
190
}
189
191
length := dec .decode ("u" , depth ).(uint32 )
190
192
v := reflect .MakeSlice (reflect .SliceOf (typeFor (s [1 :])), 0 , int (length ))
193
+ // Even for empty arrays, the correct padding must be included
194
+ dec .align (alignment (typeFor (s [1 :])))
191
195
spos := dec .pos
192
196
for dec .pos < spos + int (length ) {
193
197
ev := dec .decode (s [1 :], depth + 1 )
You can’t perform that action at this time.
0 commit comments