From b642893f724b0e952ef7bbf72a2e0804fa1e1a7c Mon Sep 17 00:00:00 2001 From: Rohan Rangray Date: Mon, 23 Dec 2013 18:07:42 -0800 Subject: [PATCH] fixed the segfault it was happening because of a dangling pointer in addp() --- client/entities/player.c | 2 +- client/main.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/entities/player.c b/client/entities/player.c index 5252a85..eee6915 100644 --- a/client/entities/player.c +++ b/client/entities/player.c @@ -144,7 +144,7 @@ drawPlayer(PLAYER *player) printf("changed player sprite!!\n"); SDL_RenderCopy(renderer, player->sprite->texture, - NULL, &player->sprite->rect); + NULL, &(player->sprite->rect)); printf("exiting drawplayer()!!\n"); } diff --git a/client/main.c b/client/main.c index 3a35871..1167f09 100644 --- a/client/main.c +++ b/client/main.c @@ -97,14 +97,14 @@ unsigned char addp(PLAYER *node,TCPsocket srv_sock) { Uint16 magic; + PLAYER *cur_player = NULL; do { - PLAYER cur_player; - init_player(srv_sock, &cur_player); - add_player(node,&cur_player); - - printf("Player %s (%d) connected, at (%d, %d)\n", cur_player.name, - cur_player.playerno, cur_player.x, cur_player.y); + cur_player = calloc(1,sizeof(PLAYER)); + init_player(srv_sock,cur_player); + add_player(node,cur_player); + printf("Player %s (%d) connected, at (%d, %d)\n", cur_player->name, + cur_player->playerno, cur_player->x, cur_player->y); } while ((magic = getshort(srv_sock)) == ADD_PLAYER); @@ -256,7 +256,7 @@ main(int argc, char *argv[]) */ SDLNet_TCP_Recv(srv_sock, &myno, 1); - player = calloc(MAX_PLAYERNUM + 1, sizeof(PLAYER)); + player = calloc(1, sizeof(PLAYER)); draw_maze(MAZE.X, MAZE.Y); -- 1.9.1