소스 검색

Fix: When resizing a virtual arena by commiting more of the already reserved memory, the total_used field of the arena was not updated;

alektron 6 달 전
부모
커밋
fd539b5e81
1개의 변경된 파일2개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      core/mem/virtual/arena.odin

+ 2 - 0
core/mem/virtual/arena.odin

@@ -341,7 +341,9 @@ arena_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode,
 				new_end := start + size
 				new_end := start + size
 				if start < old_end && old_end == block.used && new_end <= block.reserved {
 				if start < old_end && old_end == block.used && new_end <= block.reserved {
 					// grow data in-place, adjusting next allocation
 					// grow data in-place, adjusting next allocation
+					prev_used := block.used
 					_ = alloc_from_memory_block(block, new_end - old_end, 1, default_commit_size=arena.default_commit_size) or_return
 					_ = alloc_from_memory_block(block, new_end - old_end, 1, default_commit_size=arena.default_commit_size) or_return
+					arena.total_used += block.used - prev_used
 					data = block.base[start:new_end]
 					data = block.base[start:new_end]
 					return
 					return
 				}
 				}