diff --git a/buttons.c b/buttons.c index 2aa7efb2..1493153c 100644 --- a/buttons.c +++ b/buttons.c @@ -1279,12 +1279,27 @@ void Button_Skins(void) if(clicked_button == 1 || Key == SDLK_RETURN) { - strcpy(skinsdir,"skins/"); - Get_selected_item(Main_fileselector_position,Main_fileselector_offset,skinsdir+6,NULL); - Load_graphics(Gfx, skinsdir); - - strcpy(Config_choisie.SkinFile,skinsdir+6); - + T_Gui_skin * gfx = (T_Gui_skin *)malloc(sizeof(T_Gui_skin)); + if (gfx == NULL) + { + Error(0); + } + else + { + strcpy(skinsdir,"skins/"); + Get_selected_item(Main_fileselector_position,Main_fileselector_offset,skinsdir+6,NULL); + Load_graphics(gfx, skinsdir); + if (0) // Error + { + free(gfx); + } + else + { + free(Gfx); + Gfx = gfx; + strcpy(Config_choisie.SkinFile,skinsdir+6); + } + } // Font selection if (Config_choisie.Font) Menu_font=Gfx->Fun_font; diff --git a/main.c b/main.c index b3e60e9e..e15c054e 100644 --- a/main.c +++ b/main.c @@ -687,6 +687,13 @@ void Program_shutdown(void) free(Spare_screen); free(Main_screen); + // Free the skin (Gui graphics) data + if (Gfx) + { + free(Gfx); + Gfx=NULL; + } + // On prend bien soin de passer dans le répertoire initial: if (chdir(Initial_directory)!=-1) {