From 9ccd9a3fec9a65b6f58d5a61a7d3ecca9e5d7011 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sat, 07 Aug 2021 17:43:17 -0400 Subject: menu: Save seed buffer --- (limited to 'src') diff --git a/src/menu.c b/src/menu.c index 64f6c4e..91a4aa9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -35,6 +35,7 @@ const int MF_MENU_SIZES_[] = {15, 20, 30}; struct _mf_menu { + char *seed_buf; long seed; int size; int fow; @@ -105,7 +106,6 @@ _mf_menu_form(SDL_Renderer *renderer, TTF_Font *text_font, SDL_Color chkb_color; SDL_Color chkm_color; double rand_max_len; - char *seed_buf; struct mftk_widget *grid; butn_color.r = MF_COLOR_BUTN_R, butn_color.g = MF_COLOR_BUTN_G; @@ -116,8 +116,9 @@ _mf_menu_form(SDL_Renderer *renderer, TTF_Font *text_font, chkm_color.b = MF_COLOR_CHKM_B, chkm_color.a = MF_COLOR_CHKM_A; rand_max_len = ceil(log10(RAND_MAX)); - seed_buf = calloc(rand_max_len + 1, sizeof(*seed_buf)); - if (seed_buf == NULL || sprintf(seed_buf, "%ld", menu->seed) < 0) { + menu->seed_buf = calloc(rand_max_len + 1, sizeof(*menu->seed_buf)); + if (menu->seed_buf == NULL || sprintf(menu->seed_buf, "%ld", menu->seed) + < 0) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't allocate string: %s", strerror(errno)); @@ -127,7 +128,7 @@ _mf_menu_form(SDL_Renderer *renderer, TTF_Font *text_font, grid = mftk_grid_new(5, 2, MF_ROW_M, MF_COL_M, mftk_label_new(text_font, "Seed", text_color, renderer), MFTK_GRID_HALIGN_R|MFTK_GRID_VALIGN_T, - mftk_text_new('0', '9', rand_max_len, seed_buf, + mftk_text_new('0', '9', rand_max_len, menu->seed_buf, text_font, text_color, &_mf_menu_seed, &_mf_menu_play, menu), MFTK_GRID_HALIGN_L|MFTK_GRID_VALIGN_T, @@ -169,8 +170,6 @@ _mf_menu_form(SDL_Renderer *renderer, TTF_Font *text_font, MFTK_GRID_HALIGN_L|MFTK_GRID_VALIGN_T ); - free(seed_buf); - return grid; } @@ -281,6 +280,7 @@ mf_menu(SDL_Renderer *renderer) quit: mftk_window_destroy(&win); + free(menu.seed_buf); TTF_CloseFont(text_font); text_font = NULL; mf_maze_destroy(&maze); @@ -298,6 +298,9 @@ mf_menu(SDL_Renderer *renderer) TTF_CloseFont(text_font); } mftk_window_destroy(&win); + if (menu.seed_buf != NULL) { + free(menu.seed_buf); + } mf_maze_destroy(&maze); return -1; } -- cgit v0.9.1