From 38674d0147e4d43f6d2d8d6850452fe11f8f7611 Mon Sep 17 00:00:00 2001 From: jl777 Date: Wed, 6 Mar 2019 23:18:53 -1100 Subject: [PATCH] Free obj --- src/cc/tetris.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/cc/tetris.cpp b/src/cc/tetris.cpp index 5dc3cacd9..254c9b135 100644 --- a/src/cc/tetris.cpp +++ b/src/cc/tetris.cpp @@ -610,10 +610,23 @@ void tg_delete(tetris_game *obj) { tetris_game *tg_load(FILE *f) { tetris_game *obj = (tetris_game *)malloc(sizeof(tetris_game)); - fread(obj, sizeof(tetris_game), 1, f); - obj->board = (char *)malloc(obj->rows * obj->cols); - if (fread(obj->board, sizeof(char), obj->rows * obj->cols, f) != obj->rows * obj->cols ) - fprintf(stderr,"fread error\n"); + if (fread(obj, sizeof(tetris_game), 1, f) != 1 ) + { + fprintf(stderr,"read game error\n"); + free(obj); + obj = 0; + } + else + { + obj->board = (char *)malloc(obj->rows * obj->cols); + if (fread(obj->board, sizeof(char), obj->rows * obj->cols, f) != obj->rows * obj->cols ) + { + fprintf(stderr,"fread error\n"); + free(obj->board); + free(obj); + obj = 0; + } + } return obj; }