+static void newgame_serialise_write(void *ctx, void *buf, int len)
+{
+ midend *const me = ctx;
+ int new_used;
+
+ assert(len < INT_MAX - me->newgame_undo_used);
+ new_used = me->newgame_undo_used + len;
+ if (new_used > me-> newgame_undo_avail) {
+ me->newgame_undo_avail = max(me->newgame_undo_avail, new_used);
+ me->newgame_undo_avail *= 2;
+ me->newgame_undo = sresize(me->newgame_undo,
+ me->newgame_undo_avail, char);
+ }
+ memcpy(me->newgame_undo + me->newgame_undo_used, buf, len);
+ me->newgame_undo_used = new_used;
+}
+