mirror of
https://github.com/Tilo-K/tstd.git
synced 2026-01-11 15:11:01 +00:00
feat: check for oom in list
This commit is contained in:
5
list.c
5
list.c
@@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "helper.h"
|
||||||
|
|
||||||
|
|
||||||
list* list_create() {
|
list* list_create() {
|
||||||
return list_create_with_capacity(10);
|
return list_create_with_capacity(10);
|
||||||
@@ -13,7 +15,9 @@ list* list_create() {
|
|||||||
|
|
||||||
list* list_create_with_capacity(size_t capacity) {
|
list* list_create_with_capacity(size_t capacity) {
|
||||||
void** data = malloc(capacity * sizeof(void *));
|
void** data = malloc(capacity * sizeof(void *));
|
||||||
|
OOM(data);
|
||||||
list* new_list = malloc(sizeof(list));
|
list* new_list = malloc(sizeof(list));
|
||||||
|
OOM(new_list);
|
||||||
|
|
||||||
new_list->data = data;
|
new_list->data = data;
|
||||||
new_list->length = 0;
|
new_list->length = 0;
|
||||||
@@ -25,6 +29,7 @@ list* list_create_with_capacity(size_t capacity) {
|
|||||||
void list_resize(list* list) {
|
void list_resize(list* list) {
|
||||||
size_t new_capacity = (list->capacity + 1) * 1.5;
|
size_t new_capacity = (list->capacity + 1) * 1.5;
|
||||||
void** new_data = malloc(new_capacity * sizeof(void *));
|
void** new_data = malloc(new_capacity * sizeof(void *));
|
||||||
|
OOM(new_data);
|
||||||
memcpy(new_data, list->data, list->length * sizeof(void *));
|
memcpy(new_data, list->data, list->length * sizeof(void *));
|
||||||
free(list->data);
|
free(list->data);
|
||||||
list->data = new_data;
|
list->data = new_data;
|
||||||
|
|||||||
Reference in New Issue
Block a user