From 3b5bf3b6ab23c6a5157919490cc07787614f95b8 Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Mon, 24 Mar 2025 17:59:33 -0500 Subject: Add a warning to ll.h about how dlinkedlist functions are X_ALLOC functions --- src/Makefile | 31 ++++++++++++++----------------- src/ll.c | 6 ++++-- src/ll.h | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/Makefile b/src/Makefile index c5a08c7..4bddadf 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,22 +1,18 @@ CC = gcc -SHELL = /usr/bin/bash +SHELL = /usr/bin/env -S bash -DEBUG_CFLAGS := -fanalyzer -Wanalyzer-too-complex -ggdb -g3 -O0 -RELEASE_CFLAGS := -O3 -fipa-pta -fipa-cp -fuse-linker-plugin -flto=auto -CFLAGS = -Wall -Wextra -Wpedantic -pedantic-errors $(DEBUG_CFLAGS) $$(pkg-config --cflags libsodium) +# I need to get better at makefiles so I can write this in a way that isn't absolutely insane/stupid +# RELEASE_CFLAGS := -O3 -fipa-pta -fipa-cp -fuse-linker-plugin -flto=auto +# RELEASE_LDFLAGS := -fuse-linker-plugin -flto=auto -DEBUG_LDLIBS := -RELEASE_LDLIBS := -LDLIBS += $(DEBUG_LDLIBS) $$(pkg-config --libs-only-l libsodium) +CFLAGS = -Wall -Wextra -Wpedantic -pedantic-errors -fanalyzer -Wanalyzer-too-complex -ggdb -g3 -O0 $$(pkg-config --cflags libsodium) +LDLIBS += $$(pkg-config --libs-only-l libsodium) +LDFLAGS += $$(pkg-config --libs-only-L libsodium) -DEBUG_LDFLAGS := -RELEASE_LDFLAGS := -fuse-linker-plugin -flto=auto -LDFLAGS += $(DEBUG_LDFLAGS) $$(pkg-config --libs-only-L libsodium) +BINARIES := main -BINARIES := main encryption - -.PHONY: all clean +.PHONY: all c clean val all: main @@ -27,8 +23,9 @@ main.o: main.c shared.h arena.o: arena.c arena.h shared.h shared.o: shared.c shared.h -encryption: encryption.c encryption.h shared.o shared.h -ll: ll.o shared.o - c clean: - rm -rvf $(BINARIES) $(wildcard *.o) $(wildcard *.test*) $(wildcard *.enc) \ No newline at end of file + rm -rvf $(BINARIES) $(wildcard *.o) $(wildcard *.test*) $(wildcard *.enc) + +val: + $(MAKE) all + valgrind --leak-check=yes ./main \ No newline at end of file diff --git a/src/ll.c b/src/ll.c index 4e018f2..1fa8773 100644 --- a/src/ll.c +++ b/src/ll.c @@ -4,6 +4,7 @@ #include #include #include +#include typedef struct dll { void *data; @@ -118,7 +119,8 @@ int dlinkedlist_xxxend(dlinkedlist * const ll, void *data, dll_freecb fcb, char break; default: - abort(); + XALLOC_EXIT(" got an invalid op token when it shouldn't be possible to recieve one"); + // Technically not an alloc, but also there's no reason I can't reuse a perfectly good macro } ll->size++; @@ -172,7 +174,7 @@ int dlinkedlist_insert(dlinkedlist * const ll, void *data, dll_freecb fcb, int i dllnode *new = dllnode_init(data, fcb); dllnode *current = dlinkedlist_getnode(ll, index); if(!current) - abort(); + XALLOC_EXIT(" somehow managed to pull a null node from dlinkedlist_getnode(... , ... , ... , %d)", , (index)); current->prev->next = new; new->prev = current->prev; diff --git a/src/ll.h b/src/ll.h index 6e4ccf9..1f4b3b2 100644 --- a/src/ll.h +++ b/src/ll.h @@ -1,6 +1,23 @@ #ifndef __VXGG_REWRITE___LL_H___305861098005___ #define __VXGG_REWRITE___LL_H___305861098005___ +/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WA // +// RNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING // +// BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WA // +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*//* +// // +// dlinkedlist functions should be considered X_ALLOC functions, as they call xcalloc to initialize new nodes. This is not // +// reflected in their naming, which could change later, but as of know it is something to keep in mind. This means ABSOLUETLY NO // +// USE OF DLINKEDLIST FUNCTIONS INSIDE ENCRYPTION FUNCTIONS, OR ANYTHING THAT SHOULD BE CONSIDERED ATOMIC OR SEMI-ATOMIC. IF // +// XCALLOC ERRORS FOR ANY REASON, AND YOU'RE DOING SOMETHING WITH THESE IN AN (SEMI)ATOMIC FUNCTION, YOU WILL BREAK SHIT // +// // +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*//* +// BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WA // +// RNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING // +// BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WARNING BIG WA // +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ + typedef int (*dll_freecb)(void*); typedef struct dlinked dlinkedlist; -- cgit v1.2.3