--- lbbs/src/main.c 2025/05/13 07:30:10 1.30 +++ lbbs/src/main.c 2025/05/15 05:14:57 1.32 @@ -52,7 +52,6 @@ int main(int argc, char *argv[]) int daemon = 1; int std_log_redir = 0; int error_log_redir = 0; - int ret; // Parse args for (int i = 1; i < argc; i++) @@ -114,15 +113,7 @@ int main(int argc, char *argv[]) // Initialize daemon if (daemon) { - ret = init_daemon(); - if (ret > 0) // Parent process - { - return 0; - } - else if (ret < 0) // error - { - return ret; - } + init_daemon(); } // Change current dir @@ -154,9 +145,15 @@ int main(int argc, char *argv[]) } // Load menus - if (load_menu(&bbs_menu, CONF_MENU) < 0) + p_bbs_menu = calloc(1, sizeof(MENU_SET)); + if (p_bbs_menu == NULL) + { + log_error("OOM: calloc(MENU_SET)\n"); + return -3; + } + if (load_menu(p_bbs_menu, CONF_MENU) < 0) { - unload_menu(&bbs_menu); + unload_menu(p_bbs_menu); return -3; } @@ -171,8 +168,10 @@ int main(int argc, char *argv[]) return -4; } - // Cleanup - unload_menu(&bbs_menu); + // Cleanup menu + unload_menu(p_bbs_menu); + free(p_bbs_menu); + p_bbs_menu = NULL; log_std("Main process exit normally\n");