fix: guard against empty key value in parse_object_body

This commit is contained in:
Rickard Andersson
2023-10-02 15:10:12 +03:00
parent 11e884aec5
commit cfa3765d50
+9 -5
View File
@@ -264,11 +264,15 @@ parse_object_body :: proc(p: ^Parser, end_token: Token_Kind) -> (obj: Object, er
return return
} }
insert_success := runtime.map_insert(&obj, key, elem) // NOTE(gonz): There are code paths for which this traversal ends up
// NOTE(gonz): we'd rather check specifically for an allocation error here but // inserting empty key/values into the object and for those we do not
// `map_insert` doesn't differentiate; we can only check for `nil` // want to allocate anything
if insert_success == nil { if key != "" {
return nil, .Out_Of_Memory reserve_error := reserve(&obj, len(obj) + 1)
if reserve_error == mem.Allocator_Error.Out_Of_Memory {
return nil, .Out_Of_Memory
}
obj[key] = elem
} }
if parse_comma(p) { if parse_comma(p) {