src/server.c

changeset 98
9cb41383540f
parent 97
f87cad9445b4
--- 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 {

mercurial