Browse Source

add zeroing to new region from realloc

CiD- 3 years ago
parent
commit
29ca6ee420
1 changed files with 11 additions and 2 deletions
  1. 11 2
      core/os/os.odin

+ 11 - 2
core/os/os.odin

@@ -206,11 +206,20 @@ heap_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode,
 		}
 		}
 	}
 	}
 
 
-	aligned_resize :: proc(p: rawptr, old_size: int, new_size: int, new_alignment: int) -> ([]byte, mem.Allocator_Error) {
+	aligned_resize :: proc(p: rawptr, old_size: int, new_size: int, new_alignment: int) -> (new_memory: []byte, err: mem.Allocator_Error) {
 		if p == nil {
 		if p == nil {
 			return nil, nil
 			return nil, nil
 		}
 		}
-		return aligned_alloc(new_size, new_alignment, p)
+
+		new_memory = aligned_alloc(new_size, new_alignment, p) or_return
+		when ODIN_OS != "windows" {
+			// NOTE: realloc does not zero the new memory, so we do it
+			if new_size > old_size {
+				new_region := mem.raw_data(new_memory[old_size:])
+				mem.zero(new_region, new_size - old_size)
+			}
+		}
+		return
 	}
 	}
 
 
 	switch mode {
 	switch mode {