aboutsummaryrefslogtreecommitdiff
path: root/core/encoding
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-07-08 00:35:19 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-07-08 00:35:19 +0200
commit39e9b65c59eba124d5e0647ffc6cb45c8377e6c2 (patch)
tree7e9649bc93ea8974b2b3a1e663e06db63e239e28 /core/encoding
parent56856b6307e2a1aec392be0cd835458dc05c4e31 (diff)
encoding/cbor: fix umarshal of big fixed arrays
Diffstat (limited to 'core/encoding')
-rw-r--r--core/encoding/cbor/unmarshal.odin20
1 files changed, 6 insertions, 14 deletions
diff --git a/core/encoding/cbor/unmarshal.odin b/core/encoding/cbor/unmarshal.odin
index 289895e98..13350bb85 100644
--- a/core/encoding/cbor/unmarshal.odin
+++ b/core/encoding/cbor/unmarshal.odin
@@ -520,9 +520,7 @@ _unmarshal_array :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header
return
case reflect.Type_Info_Array:
- _, scap := err_conv(_decode_len_container(d, add)) or_return
- length := min(scap, t.count)
-
+ length, _ := err_conv(_decode_len_container(d, add)) or_return
if length > t.count {
return _unsupported(v, hdr)
}
@@ -534,9 +532,7 @@ _unmarshal_array :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header
return
case reflect.Type_Info_Enumerated_Array:
- _, scap := err_conv(_decode_len_container(d, add)) or_return
- length := min(scap, t.count)
-
+ length, _ := err_conv(_decode_len_container(d, add)) or_return
if length > t.count {
return _unsupported(v, hdr)
}
@@ -548,9 +544,7 @@ _unmarshal_array :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header
return
case reflect.Type_Info_Complex:
- _, scap := err_conv(_decode_len_container(d, add)) or_return
- length := min(scap, 2)
-
+ length, _ := err_conv(_decode_len_container(d, add)) or_return
if length > 2 {
return _unsupported(v, hdr)
}
@@ -570,9 +564,7 @@ _unmarshal_array :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header
return
case reflect.Type_Info_Quaternion:
- _, scap := err_conv(_decode_len_container(d, add)) or_return
- length := min(scap, 4)
-
+ length, _ := err_conv(_decode_len_container(d, add)) or_return
if length > 4 {
return _unsupported(v, hdr)
}
@@ -633,7 +625,7 @@ _unmarshal_map :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header,
length, _ := err_conv(_decode_len_container(d, add)) or_return
unknown := length == -1
fields := reflect.struct_fields_zipped(ti.id)
-
+
for idx := 0; idx < len(fields) && (unknown || idx < length); idx += 1 {
// Decode key, keys can only be strings.
key: string
@@ -646,7 +638,7 @@ _unmarshal_map :: proc(d: Decoder, v: any, ti: ^reflect.Type_Info, hdr: Header,
key = keyv
}
defer delete(key, context.temp_allocator)
-
+
// Find matching field.
use_field_idx := -1
{