| 234 | } |
| 235 | |
| 236 | func (rd *realDecoder) getNullableInt32Array() ([]int32, error) { |
| 237 | n, err := rd.getArrayLength() |
| 238 | if err != nil { |
| 239 | return nil, err |
| 240 | } |
| 241 | if n < -1 { |
| 242 | return nil, errInvalidArrayLength |
| 243 | } |
| 244 | if n == -1 { |
| 245 | return nil, nil |
| 246 | } |
| 247 | |
| 248 | if rd.remaining()/4 < n { |
| 249 | rd.off = len(rd.raw) |
| 250 | return nil, ErrInsufficientData |
| 251 | } |
| 252 | |
| 253 | ret := make([]int32, n) |
| 254 | for i := range ret { |
| 255 | ret[i] = int32(binary.BigEndian.Uint32(rd.raw[rd.off:])) |
| 256 | rd.off += 4 |
| 257 | } |
| 258 | return ret, nil |
| 259 | } |
| 260 | |
| 261 | func (rd *realDecoder) getInt32Array() ([]int32, error) { |
| 262 | ret, err := rd.getNullableInt32Array() |