fwiw I just found a bad memory read in spells2.c
Now, there is no check on the outer bounds for x2 and y2 and they might (will) exceed the borders of cave_feat. The in_bounds_fully() check is done after the read. A fix is to move that check to the start of the loop or just restrict the loop upper bounds.
Cheers
Code:
void map_area(void) { int i, x, y; int x1, x2, y1, y2; /* Pick an area to map */ y1 = p_ptr->py - DETECT_DIST_Y; y2 = p_ptr->py + DETECT_DIST_Y; x1 = p_ptr->px - DETECT_DIST_X; x2 = p_ptr->px + DETECT_DIST_X; if (y1 < 0) y1 = 0; if (x1 < 0) x1 = 0; /* Scan the dungeon */ for (y = y1; y < y2; y++) { for (x = x1; x < x2; x++) { /* All non-walls are "checked" */ if (cave_feat[y][x] < FEAT_SECRET) { if (!in_bounds_fully(y, x)) continue; //stuff
Cheers
Comment