From e230bb01c04351add47fec794c4529aadafe17ed Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sun, 22 Jun 2025 15:54:10 +0200 Subject: [PATCH] Fix: store route_hashtable keys on the heap --- main.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index 922e5d4..3e4383a 100644 --- a/main.c +++ b/main.c @@ -133,7 +133,7 @@ void route_hashtable_put_blogs(Baked_Resource *resource, void *udata) { if ((strlen(resource->key) >= strlen("blog-")) && strncmp(resource->key, "blog-", strlen("blog-")) == 0) { - char path[MG_PATH_MAX]; + char *path = malloc(MG_PATH_MAX); snprintf(path, MG_PATH_MAX, "/%s", resource->key); shput(route_hashtable.value, path, &route_generic_blog); route_hashtable.value[shgeti(route_hashtable.value, path)].context_data = (void *)resource; @@ -144,11 +144,11 @@ void init_route_hashtable(void) { lockx(&route_hashtable); shdefault(route_hashtable.value, &route_page_not_found); - shput(route_hashtable.value, "/", &route_home); - shput(route_hashtable.value, "/page-missing", &route_page_not_found); - shput(route_hashtable.value, "/blog", &route_blog); + shput(route_hashtable.value, clonestr("/"), &route_home); + shput(route_hashtable.value, clonestr("/page-missing"), &route_page_not_found); + shput(route_hashtable.value, clonestr("/blog"), &route_blog); #if MY_DEBUG - shput(route_hashtable.value, "/build-id", &route_build_id); + shput(route_hashtable.value, clonestr("/build-id"), &route_build_id); #endif baked_resource_each(&route_hashtable_put_blogs, nil); @@ -158,6 +158,9 @@ void init_route_hashtable(void) void free_route_hashtable(void) { lockx(&route_hashtable); + for (size_t i = 0; i < shlen(route_hashtable.value); i++) { + free(route_hashtable.value[i].key); + } shfree(route_hashtable.value); unlockx(&route_hashtable); }