From eb6469c2b5aac07d3cb2bf0a9eb251a595cf639a Mon Sep 17 00:00:00 2001 From: bgiraudr Date: Fri, 11 Feb 2022 19:41:41 +0100 Subject: [PATCH] free monster --- include/monster.h | 5 +++-- src/battle.c | 5 +++-- src/monster.c | 8 +++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/monster.h b/include/monster.h index 22bb434..7b064ae 100644 --- a/include/monster.h +++ b/include/monster.h @@ -6,7 +6,7 @@ #include struct Monster { - char *name; + const char *name; bopti_image_t *sprite; int nbMoves; struct Stats *stats; @@ -15,4 +15,5 @@ struct Monster { struct Monster *generate_monster(struct Game *game); struct Move monster_select(struct Player *player, struct Monster *monster); -struct Monster *copyMonster(struct Monster *source); \ No newline at end of file +struct Monster *copyMonster(struct Monster *source); +void free_monster(struct Monster *monster); \ No newline at end of file diff --git a/src/battle.c b/src/battle.c index 78f2227..59169c3 100644 --- a/src/battle.c +++ b/src/battle.c @@ -11,7 +11,9 @@ void create_battle(struct Game *game) { game->player->stats.pv = game->player->stats.max_pv; - during_battle(game->player, generate_monster(game)); + struct Monster *monster = generate_monster(game); + during_battle(game->player, monster); + free_monster(monster); } int during_battle(struct Player *player, struct Monster *monster) { @@ -51,7 +53,6 @@ int during_battle(struct Player *player, struct Monster *monster) { } tour++; } - free(monster); return LOSE; } diff --git a/src/monster.c b/src/monster.c index a8aa58e..563bbc1 100644 --- a/src/monster.c +++ b/src/monster.c @@ -29,7 +29,7 @@ struct Move monster_select(struct Player *player, struct Monster *monster) { struct Monster *copyMonster(struct Monster *source) { struct Monster *dest = malloc(sizeof(struct Monster)); - dest->name = strdup(source->name); + dest->name = source->name; dest->nbMoves = source->nbMoves; dest->sprite = source->sprite; @@ -40,4 +40,10 @@ struct Monster *copyMonster(struct Monster *source) { memcpy(dest->stats, source->stats, sizeof *source->stats); return dest; +} + +void free_monster(struct Monster *monster) { + free(monster->moves); + free(monster->stats); + free(monster); } \ No newline at end of file