mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
More defensive-coding fixes from James H.
[originally from svn r8605]
This commit is contained in:
1
cube.c
1
cube.c
@ -996,6 +996,7 @@ static void free_game(game_state *state)
|
|||||||
sfree(state->grid->squares);
|
sfree(state->grid->squares);
|
||||||
sfree(state->grid);
|
sfree(state->grid);
|
||||||
}
|
}
|
||||||
|
sfree(state->bluemask);
|
||||||
sfree(state->facecolours);
|
sfree(state->facecolours);
|
||||||
sfree(state);
|
sfree(state);
|
||||||
}
|
}
|
||||||
|
@ -1500,7 +1500,7 @@ static void draw_grid(drawing *dr, game_drawstate *ds, game_state *state,
|
|||||||
|
|
||||||
if (flashy || !shading) {
|
if (flashy || !shading) {
|
||||||
/* clear all background flags */
|
/* clear all background flags */
|
||||||
} else if (ui->sel && ui->sel[y*w+x]) {
|
} else if (ui && ui->sel && ui->sel[y*w+x]) {
|
||||||
flags |= HIGH_BG;
|
flags |= HIGH_BG;
|
||||||
} else if (v) {
|
} else if (v) {
|
||||||
int size = dsf_size(ds->dsf_scratch, y*w+x);
|
int size = dsf_size(ds->dsf_scratch, y*w+x);
|
||||||
@ -1509,7 +1509,7 @@ static void draw_grid(drawing *dr, game_drawstate *ds, game_state *state,
|
|||||||
else if (size > v)
|
else if (size > v)
|
||||||
flags |= ERROR_BG;
|
flags |= ERROR_BG;
|
||||||
}
|
}
|
||||||
if (ui->cur_visible && x == ui->cur_x && y == ui->cur_y)
|
if (ui && ui->cur_visible && x == ui->cur_x && y == ui->cur_y)
|
||||||
flags |= CURSOR_SQ;
|
flags |= CURSOR_SQ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
3
loopy.c
3
loopy.c
@ -1513,6 +1513,7 @@ static void add_full_clues(game_state *state, random_state *rs)
|
|||||||
face_scores = snewn(num_faces, struct face_score);
|
face_scores = snewn(num_faces, struct face_score);
|
||||||
for (i = 0; i < num_faces; i++) {
|
for (i = 0; i < num_faces; i++) {
|
||||||
face_scores[i].random = random_bits(rs, 31);
|
face_scores[i].random = random_bits(rs, 31);
|
||||||
|
face_scores[i].black_score = face_scores[i].white_score = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Colour a random, finite face white. The infinite face is implicitly
|
/* Colour a random, finite face white. The infinite face is implicitly
|
||||||
@ -3232,6 +3233,8 @@ static game_state *execute_move(game_state *state, char *move)
|
|||||||
|
|
||||||
while (*move) {
|
while (*move) {
|
||||||
i = atoi(move);
|
i = atoi(move);
|
||||||
|
if (i < 0 || i >= newstate->game_grid->num_edges)
|
||||||
|
goto fail;
|
||||||
move += strspn(move, "1234567890");
|
move += strspn(move, "1234567890");
|
||||||
switch (*(move++)) {
|
switch (*(move++)) {
|
||||||
case 'y':
|
case 'y':
|
||||||
|
@ -1045,6 +1045,7 @@ static game_drawstate *game_new_drawstate(drawing *dr, game_state *state)
|
|||||||
ds->visible = snewn(ds->w * ds->h, unsigned char);
|
ds->visible = snewn(ds->w * ds->h, unsigned char);
|
||||||
ds->tilesize = 0; /* not decided yet */
|
ds->tilesize = 0; /* not decided yet */
|
||||||
memset(ds->visible, 255, ds->w * ds->h);
|
memset(ds->visible, 255, ds->w * ds->h);
|
||||||
|
ds->cur_x = ds->cur_y = 0;
|
||||||
|
|
||||||
return ds;
|
return ds;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user