-#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
char *saveboard (board_t *board, blocks_t *blocks)
{
int i;
- int size = 3 * (8 + 3) + 8 + board->width * board->height + 1;
- size += 3 * (8 + blocks->nb + 1);
+ int size = 3 * (8 + 2) + 7 + board->width * board->height;
+ size += 3 * (8 + blocks->nb);
for (i = 0; i < blocks->nb; i++) {
- size += 3 * (13 + 3) + 14 + blocks->block[i]->width * blocks->block[i]->height + 1;
+ int nbdigits = (i < 10) ? 1 : 2;
+ block_t *block = blocks->block[i];
+ size += 3 * (11 + nbdigits + 2) + 12 + nbdigits + block->width * block->height;
}
VERBOSE (INFO, size += board->height * (8 + board->width));
- char *buffer = (char *) calloc (size, 1);
+ char *buffer = (char *) calloc (size + 1, 1);
CHECKALLOC (buffer);
int l = sprintf (buffer, "width: %d\n", board->width);
for (i = 0; i < blocks->nb; i++) {
l += _sprintblock (buffer + l, i, blocks->block[i]);
}
- assert (l <= size);
VERBOSE (INFO, _makecomments (buffer + l, board));