diff options
| author | Syndamia <kamen@syndamia.com> | 2026-04-28 14:28:06 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2026-05-12 07:08:56 +0300 |
| commit | a619dd631c367d60a06a28e81fec634c7d827308 (patch) | |
| tree | fecb09aa088d406df98658b57137a0ac3c19782e | |
| parent | 0d249b1d47a7f84cfe5f09ad070d1affd26566da (diff) | |
| download | foollib-a619dd631c367d60a06a28e81fec634c7d827308.tar foollib-a619dd631c367d60a06a28e81fec634c7d827308.tar.gz foollib-a619dd631c367d60a06a28e81fec634c7d827308.zip | |
chore: Add safety checks and clean up code style
| -rw-r--r-- | BumpAlloc.c | 15 | ||||
| -rw-r--r-- | MemoryManager.c | 25 | ||||
| -rw-r--r-- | String.c | 14 | ||||
| -rw-r--r-- | example.c | 2 |
4 files changed, 37 insertions, 19 deletions
diff --git a/BumpAlloc.c b/BumpAlloc.c index 09af8fa..e162081 100644 --- a/BumpAlloc.c +++ b/BumpAlloc.c @@ -14,7 +14,7 @@ top_size(struct BumpAlloc* b) { return (usize*)(b->memory + b->top); } -static int +static inline int bump_resizeable(struct BumpAlloc *b, void *ptr) { if (NULL == b) return 0; @@ -48,6 +48,9 @@ bump_free(MemoryManager mm, void **ptr) { Result bump_destroy(MemoryManager *mm) { + if (NULL == mm) + return R_NullArgument; + if (NULL == mm->priv) return R_Uninitialized; @@ -56,7 +59,7 @@ bump_destroy(MemoryManager *mm) { if (NULL == b.memory) { free(mm->priv); mm->priv = NULL; - return R_Uninitialized; + return R_InvalidArgument; } free(b.memory); @@ -67,13 +70,13 @@ bump_destroy(MemoryManager *mm) { } Result -bump_alloc(MemoryManager mm, void** ptr, usize size) { - if (NULL == mm.priv) - return R_Uninitialized; - +bump_alloc(MemoryManager mm, void **ptr, usize size) { if (0 == size || NULL == ptr) return R_NullArgument; + if (NULL == mm.priv) + return R_Uninitialized; + struct BumpAlloc *b = (struct BumpAlloc*)mm.priv; if (size + b->top + sizeof(usize) > b->size) diff --git a/MemoryManager.c b/MemoryManager.c index 68dab6e..98e70e7 100644 --- a/MemoryManager.c +++ b/MemoryManager.c @@ -1,27 +1,42 @@ #include "MemoryManager.h" +#include "Types.h" #include <stdlib.h> -Result std_alloc(MemoryManager mm, void** ptr, usize size) { +Result +std_alloc(MemoryManager mm, void **ptr, usize size) { + if (NULL == ptr) + return R_NullArgument; + *ptr = malloc(size); return (*ptr == NULL) ? R_Err : R_Ok; } -Result std_realloc(MemoryManager mm, void** ptr, usize size) { +Result +std_realloc(MemoryManager mm, void **ptr, usize size) { + if (NULL == ptr) + return R_NullArgument; + *ptr = realloc(*ptr, size); return (*ptr == NULL) ? R_Err : R_Ok; } -Result std_free(MemoryManager mm, void** ptr) { +Result +std_free(MemoryManager mm, void **ptr) { + if (NULL == ptr) + return R_NullArgument; + free(*ptr); *ptr = NULL; return R_Ok; } -Result std_destroy(MemoryManager *mm) { +Result +std_destroy(MemoryManager *mm) { return R_Unavailable; } -MemoryManager M_std() { +MemoryManager +M_std() { return (MemoryManager){ .alloc = &std_alloc, .realloc = &std_realloc, @@ -35,7 +35,7 @@ S_start(MemoryManager *mm, usize length) { } String -S_new(MemoryManager *mm, const char* str) { +S_new(MemoryManager *mm, const char *str) { if (NULL == str) return NULL; @@ -91,7 +91,7 @@ S_vconcat(MemoryManager *mm, va_list args) { va_list temp; va_copy(temp, args); - for (const char* str = va_arg(temp, const char*); str != NULL; str = va_arg(temp, const char*)) { + for (const char *str = va_arg(temp, const char*); str != NULL; str = va_arg(temp, const char*)) { length += strlen(str); } va_end(temp); @@ -102,7 +102,7 @@ S_vconcat(MemoryManager *mm, va_list args) { return NULL; if (0 < length) { - for (const char* str = va_arg(args, const char*); str != NULL; str = va_arg(args, const char*)) + for (const char *str = va_arg(args, const char*); str != NULL; str = va_arg(args, const char*)) strncat(result, str, length); } return result; @@ -121,7 +121,7 @@ S_concat(MemoryManager *mm, ...) { } String -S_vprintf(MemoryManager *mm, const char* fmt, va_list args) { +S_vprintf(MemoryManager *mm, const char *fmt, va_list args) { if (NULL == mm) return NULL; @@ -139,7 +139,7 @@ S_vprintf(MemoryManager *mm, const char* fmt, va_list args) { } String -S_printf(MemoryManager *mm, const char* fmt, ...) { +S_printf(MemoryManager *mm, const char *fmt, ...) { va_list args; va_start(args, fmt); @@ -172,7 +172,7 @@ S_resize(String *s, usize length) { } Result -S_append(String *s, const char* str) { +S_append(String *s, const char *str) { if (NULL == str) return R_Uninitialized; @@ -187,7 +187,7 @@ S_append(String *s, const char* str) { } Result -S_prepend(String *s, const char* str) { +S_prepend(String *s, const char *str) { if (NULL == s) return R_Uninitialized; @@ -12,7 +12,7 @@ main() { Result status = R_Ok; for (usize i = 7; i <= 4830; i += 69) { - PRINT_NOTOK(V_pushp((void***)&hexes, S_printf(&t, "%x", i))); + PRINT_NOTOK(V_pushp((Vector**)&hexes, S_printf(&t, "%x", i))); } String all = S_printf(&g, "Total: %ld\n", V_count(hexes)); |
