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); }