소스 검색

fix(json): return `.Out_Of_Memory` when out of memory on parse

Previously this would silently simply not do anything and the object
would be empty/incomplete when parsed instead.
Rickard Andersson 2 년 전
부모
커밋
0a8b266c71
1개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      core/encoding/json/parser.odin

+ 6 - 0
core/encoding/json/parser.odin

@@ -263,6 +263,12 @@ parse_object_body :: proc(p: ^Parser, end_token: Token_Kind) -> (obj: Object, er
 			return
 		}
 
+		if len(obj) == cap(obj) {
+			reserve_error := reserve(&obj, max(1, cap(obj) * 2))
+			if reserve_error != nil {
+				return nil, .Out_Of_Memory
+			}
+		}
 		obj[key] = elem
 		
 		if parse_comma(p) {