play_t *initplay (int xsize, int ysize)
{
play_t *play = (play_t *) malloc (sizeof (play_t));
+ CHECKALLOC (play);
play->tab = (char *) malloc (xsize * ysize);
+ CHECKALLOC (play->tab);
memset (play->tab, ' ', xsize * ysize);
play->xsize = xsize;
play->ysize = ysize;
draw_t *newdraw (int nbtiles)
{
draw_t *draw = (draw_t *) malloc (sizeof (draw_t));
+ CHECKALLOC (draw);
draw->tiles = (char *) calloc (1, nbtiles);
+ CHECKALLOC (draw->tiles);
draw->nbtiles = nbtiles;
return draw;
}
{
int i;
word_t *words = (word_t *) calloc (1, sizeof (word_t));
+ CHECKALLOC (words);
words->tab = (char **) calloc (maxnbwords, sizeof (char *));
+ CHECKALLOC (words->tab);
for (i = 0; i < maxnbwords; i++) {
words->tab[i] = (char *) calloc (maxlength, 1);
+ CHECKALLOC (words->tab[i]);
}
words->status = (spelling_e *) calloc (maxnbwords, sizeof (spelling_e));
+ CHECKALLOC (words->status);
words->maxnbwords = maxnbwords;
return words;
}
#include "type.h"
+#define CHECKALLOC(ptr) \
+ do { \
+ if ((ptr) == NULL) { \
+ VERBOSE (ERROR, fprintf (stderr, "can't get enough memory for '%s'\n", #ptr)); \
+ exit (1); \
+ } \
+ } while (0)
+
int contains (char *list, char *str);
int strmaxlen (char *str, char ch);
draw_t *draw = initdraw (bag);
draw_t **game = (draw_t **) calloc (nbplayers, sizeof (draw_t *));
+ CHECKALLOC (game);
for (n = 0; n < nbplayers; n++) {
game[n] = retrievetiles (draw, board->length, NULL, 0);
}
VERBOSE (DEBUG, printf ("bag: 0x%p\ndraw: 0x%p\ngame: 0x%p\ngame[0]: 0x%p", bag, draw, game, game[0]));
play_t **turn = (play_t **) calloc (nbplayers, sizeof (play_t *));
+ CHECKALLOC (turn);
for (n = 0; n < nbplayers; n++) {
turn[n] = initplay (board->xsize, board->ysize);
}
int xhelpwin = xvaluewin + xoffset + 10;
int yhelpwin = yoffset - 1;
int *xdrawwin = (int *) calloc (nbplayers, sizeof (int));
+ CHECKALLOC (xdrawwin);
int *ydrawwin = (int *) calloc (nbplayers, sizeof (int));
+ CHECKALLOC (ydrawwin);
for (n = 0; n < nbplayers; n++) {
xdrawwin[n] = (n + 1) * xoffset + n * (board->length * 2 - 1);
ydrawwin[n] = 2 * yoffset + max (board->ysize, 1 + (bag->nbletters + 1) /2);
int y = (play->ysize + 1)/ 2 - 1;
int *score = (int *) calloc (nbplayers, sizeof (int));
+ CHECKALLOC (score);
for (n = 0; n < nbplayers; n++) {
drawwindow (game[n], score[n], xdrawwin[n], ydrawwin[n], 0);
}