From 8dbdf176f39044b5d0808be05625d00a84ee6fc5 Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Tue, 16 Jan 2018 10:35:40 +0100 Subject: [PATCH] Highscore Memory Overflow Bug fixed --- highscores.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/highscores.c b/highscores.c index 7ab9f3f..a68d140 100644 --- a/highscores.c +++ b/highscores.c @@ -18,6 +18,7 @@ TTF_Font * font = NULL; void HIGHSCORES_Initialize(){ printf("Initializing Highscores...\n"); + Message_rect = (SDL_Rect) {.x = 0, .y = 0, .w = 2, .h = 2 }; White = (SDL_Color) {255, 255, 255 }; ul = malloc(10 * sizeof(User)); font = TTF_OpenFont("assets/fonts/monofur.ttf", 48); @@ -58,15 +59,17 @@ void HIGHSCORES_Draw(SDL_Renderer * renderer){ Message_rect.y = 70; Message_rect.x = 50; SDL_RenderCopy(renderer, Message, NULL, &Message_rect); + SDL_DestroyTexture(Message); while (count < entriesGot) { sprintf(buffer, format, ul[count].Username, ul[count].Score); HIGHSCORES_GenerateTexture(renderer, buffer); Message_rect.y = ((Message_rect.h + 10) * (count + 1)) + 140; Message_rect.x = 50; SDL_RenderCopy(renderer, Message, NULL, &Message_rect); + SDL_DestroyTexture(Message); count++; } -} +} /* HIGHSCORES_Draw */ void HIGHSCORES_Deinitialize(){ printf("De-initializing Highscores...\n"); @@ -84,7 +87,9 @@ void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer, char * text){ TTF_SizeText(font, text, &w, &h); surfaceMessage = TTF_RenderText_Solid(font, text, White); // as TTF_RenderText_Solid could only be used on SDL_Surface then you have to create the surface first Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage); // now you can convert it into a texture - Message_rect = (SDL_Rect) {.x = 0, .y = 0, .w = w, .h = h }; // create a rect + SDL_FreeSurface(surfaceMessage); + Message_rect.w = w; + Message_rect.h = h; } void HIGHSCORES_ReloadList(int * usercount){