Skip to content

Commit 1ce228d

Browse files
Update common.c
1 parent 82707b9 commit 1ce228d

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

code/logic/common.c

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,29 +1446,38 @@ pizza_sys_memory_t pizza_sys_memory_move(pizza_sys_memory_t dest, const pizza_sy
14461446
}
14471447

14481448
pizza_sys_memory_t pizza_sys_memory_resize(pizza_sys_memory_t ptr, size_t old_size, size_t new_size) {
1449-
if (ptr == null) {
1449+
if (!ptr) {
14501450
fprintf(stderr, "Error: pizza_sys_memory_resize() - Pointer is null.\n");
1451-
return null;
1451+
return NULL;
14521452
}
14531453

14541454
if (new_size == 0) {
14551455
pizza_sys_memory_free(ptr);
1456-
return null;
1456+
return NULL;
1457+
}
1458+
1459+
if (new_size <= old_size) {
1460+
// Shrinking, just realloc (no data copy needed)
1461+
pizza_sys_memory_t new_ptr = pizza_sys_memory_realloc(ptr, new_size);
1462+
if (!new_ptr) {
1463+
fprintf(stderr, "Error: pizza_sys_memory_resize() - Memory shrink failed, original preserved.\n");
1464+
return ptr;
1465+
}
1466+
return new_ptr;
14571467
}
14581468

1459-
// Allocate new memory
1460-
pizza_sys_memory_t new_ptr = pizza_sys_memory_realloc(ptr, new_size);
1469+
// Allocate new memory manually to preserve old data
1470+
pizza_sys_memory_t new_ptr = pizza_sys_memory_alloc(new_size);
14611471
if (!new_ptr) {
1462-
// Allocation failed; return the original memory block
1463-
fprintf(stderr, "Error: pizza_sys_memory_resize() - Memory resize failed, original memory preserved.\n");
1472+
fprintf(stderr, "Error: pizza_sys_memory_resize() - Allocation failed.\n");
14641473
return ptr;
14651474
}
14661475

1467-
// Check if new size is larger, and if so, preserve the old data
1468-
if (new_size > old_size && ptr) {
1469-
// Initialize new memory with old data (if necessary)
1470-
memcpy(new_ptr, ptr, old_size);
1471-
}
1476+
// Copy old data
1477+
memcpy(new_ptr, ptr, old_size);
1478+
1479+
// Free old memory
1480+
pizza_sys_memory_free(ptr);
14721481

14731482
return new_ptr;
14741483
}

0 commit comments

Comments
 (0)