From 58ed9ed8d5ebfd8db47227bd70e30fd6293ba87c Mon Sep 17 00:00:00 2001 From: ENGO150 Date: Sat, 26 Aug 2023 17:07:19 +0200 Subject: [PATCH] implemented llists in memory-identifiers && memory fix lol haven't done anything in a while lmao --- src/core/lib/flags.c | 65 ++++++-------------------------------- src/core/lib/utils/llist.c | 3 +- 2 files changed, 11 insertions(+), 57 deletions(-) diff --git a/src/core/lib/flags.c b/src/core/lib/flags.c index 6e58476..8fe7c89 100644 --- a/src/core/lib/flags.c +++ b/src/core/lib/flags.c @@ -18,8 +18,11 @@ along with this program. If not, see . #include +#include #include +#include +#include #include //CONSTS (this is just local) @@ -36,66 +39,16 @@ why2_encryption_operation_cb encryptionOperation_cb = encryptionOperation; why2_bool flagsChanged = 0; //CHANGES TO 1 WHEN U USE why2_set_flags char *memory_identifier = DEFAULT_MEMORY_IDENTIFIER; -//LINKED LIST SHIT -typedef struct node -{ - char *identifier; - struct node *next; -} node_t; - -node_t *list_head = NULL; - -void push_to_list_end(char *identifier) -{ - node_t *new_node = malloc(sizeof(node_t)); - node_t *buffer = list_head; - - new_node -> identifier = identifier; - new_node -> next = NULL; - - if (list_head == NULL) //LIST IS EMTPY - { - list_head = new_node; - } else - { - while (buffer -> next != NULL) buffer = buffer -> next; //GO TO THE END OF LIST - - buffer -> next = new_node; //LINK - } -} - -void remove_node_from_end(void) -{ - if (list_head == NULL) return; //EMPTY LIST - - node_t *buffer = list_head; - node_t *deallocating_node; - - if (buffer -> next == NULL) //ONLY ONE NODE - { - deallocating_node = buffer; - - list_head = NULL; - } else - { - while (buffer -> next -> next != NULL) buffer = buffer -> next; //GO TO THE NODE BEFORE END - - deallocating_node = buffer -> next; - - buffer -> next = NULL; //UNLINK - } - - free(deallocating_node); -} +why2_list_t identifier_list = WHY2_LIST_EMPTY; char *get_last_node_identifier(void) { - if (list_head == NULL) return DEFAULT_MEMORY_IDENTIFIER; + if (identifier_list.head == NULL) return DEFAULT_MEMORY_IDENTIFIER; - node_t *buffer = list_head; + why2_node_t *buffer = identifier_list.head; while (buffer -> next != NULL) buffer = buffer -> next; - return buffer -> identifier; + return buffer -> value; } //GETTERS @@ -188,14 +141,14 @@ void why2_set_encryption_operation(why2_encryption_operation_cb newEncryptionOpe void why2_set_memory_identifier(char *new_memory_identifier) { - push_to_list_end(new_memory_identifier); + why2_list_push(&identifier_list, new_memory_identifier, strlen(new_memory_identifier) + 1); //TODO: Check memory problems memory_identifier = new_memory_identifier; } void why2_reset_memory_identifier(void) { - remove_node_from_end(); + why2_list_remove_back(&identifier_list); memory_identifier = get_last_node_identifier(); } diff --git a/src/core/lib/utils/llist.c b/src/core/lib/utils/llist.c index a22be98..a36a3fc 100644 --- a/src/core/lib/utils/llist.c +++ b/src/core/lib/utils/llist.c @@ -98,7 +98,7 @@ void why2_list_remove_back(why2_list_t *list) { deallocating_node = buffer; - head = NULL; + list -> head = NULL; } else { while (buffer -> next -> next != NULL) buffer = buffer -> next; //GO TO THE NODE BEFORE END @@ -108,6 +108,7 @@ void why2_list_remove_back(why2_list_t *list) buffer -> next = NULL; //UNLINK } + free(deallocating_node -> value); free(deallocating_node); }