From 0ba750de9347761e2037090708b9ec2cfb87bc89 Mon Sep 17 00:00:00 2001 From: Kapliuk Date: Thu, 14 Mar 2024 15:37:57 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D0=B8=20'c?= =?UTF-8?q?v4/list=5Fops.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv4/list_ops.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/cv4/list_ops.c b/cv4/list_ops.c index f37cc06..3b8a817 100644 --- a/cv4/list_ops.c +++ b/cv4/list_ops.c @@ -17,17 +17,14 @@ list_t *new_list(size_t length, list_element_t elements[]) { } list_t *append_list(list_t *list1, list_t *list2) { - list_t *list3 = malloc(sizeof(list_t) + (list1->length + list2->length) * sizeof(list_element_t)); - if (!list3) { - return NULL; - } - list3->length = list1->length + list2->length; - for(size_t i= 0; i < list1->length;i++) - list3->elements[i] = list1->elements[i]; - for(size_t i = list1->length; i < list1->length + list2->length;i++){ - list3->elements[i] = list2->elements[i]; - } - return list3; + if (!list1 || !list2) + return NULL; + list_t *list = new_list(list1->length + list2->length, NULL); + if (!list) + return NULL; + memcpy(list->elements, list1->elements, sizeof(list_element_t) * list1->length); + memcpy(list->elements + list1->length, list2->elements, sizeof(list_element_t) * list2->length); + return list; } list_t *filter_list(list_t *list, bool (*predicate)(list_element_t)) {