diff -r f87cad9445b4 -r 9cb41383540f src/server.c --- a/src/server.c Sat Apr 04 12:35:59 2026 +0200 +++ b/src/server.c Sat Apr 04 13:25:47 2026 +0200 @@ -129,29 +129,14 @@ int fd = server.client->fd; if (settings->continuepgn) { /* Continue game, send PGN data */ - uint16_t mc = 0; - MoveList *movelist = gamestate.movelist; - while (movelist) { - mc++; - movelist = movelist->next; - } - - Move* moves = calloc(mc, sizeof(Move)); - - movelist = gamestate.movelist; - mc = 0; - while (movelist) { - moves[mc] = movelist->move; - mc++; - movelist = movelist->next; - } - + uint16_t mc = gamestate.movecount; size_t pgndata_size = sizeof(GameInfo)+sizeof(mc)+mc*sizeof(Move); char *pgndata = malloc(pgndata_size); memcpy(pgndata, &(settings->gameinfo), sizeof(GameInfo)); - memcpy(pgndata+sizeof(GameInfo), &mc, sizeof(mc)); - memcpy(pgndata+sizeof(GameInfo)+sizeof(mc), moves, mc*sizeof(Move)); - free(moves); + unsigned offset = sizeof(GameInfo); + memcpy(pgndata+offset, &mc, sizeof(mc)); + offset += sizeof(mc); + memcpy(pgndata+offset, gamestate.moves, mc*sizeof(Move)); net_send_data(fd, NETCODE_PGNDATA, pgndata, pgndata_size); free(pgndata); } else {