Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/games/gomoku gomoku: clean up overlap info in 'checkframes'
details: https://anonhg.NetBSD.org/src/rev/1cd8b2a66bf8
branches: trunk
changeset: 366527:1cd8b2a66bf8
user: rillig <rillig%NetBSD.org@localhost>
date: Sun May 29 18:25:39 2022 +0000
description:
gomoku: clean up overlap info in 'checkframes'
In 2009, GCC had complained that the overlap_info might only be
partially filled. All possible code paths are sane though, so that was
probably a bug in GCC.
Remove the comment and the unnecessary initialization, rename the
variable since it doesn't match its behavior anymore. Sync nearby
comments with reality; there is no array anywhere near.
No functional change.
diffstat:
games/gomoku/pickmove.c | 46 ++++++++++++++++++----------------------------
1 files changed, 18 insertions(+), 28 deletions(-)
diffs (128 lines):
diff -r 45a40f8a44f3 -r 1cd8b2a66bf8 games/gomoku/pickmove.c
--- a/games/gomoku/pickmove.c Sun May 29 18:05:25 2022 +0000
+++ b/games/gomoku/pickmove.c Sun May 29 18:25:39 2022 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pickmove.c,v 1.63 2022/05/29 18:05:25 rillig Exp $ */
+/* $NetBSD: pickmove.c,v 1.64 2022/05/29 18:25:39 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -34,7 +34,7 @@
#include <sys/cdefs.h>
/* @(#)pickmove.c 8.2 (Berkeley) 5/3/95 */
-__RCSID("$NetBSD: pickmove.c,v 1.63 2022/05/29 18:05:25 rillig Exp $");
+__RCSID("$NetBSD: pickmove.c,v 1.64 2022/05/29 18:25:39 rillig Exp $");
#include <stdlib.h>
#include <string.h>
@@ -53,7 +53,7 @@
* This structure is used to store overlap information between frames.
*/
struct overlap_info {
- int o_intersect; /* intersection spot */
+ spot_index o_intersect; /* intersection spot */
u_char o_off; /* offset in frame of intersection */
u_char o_frameindex; /* intersection frame index */
};
@@ -661,18 +661,9 @@
struct combostr **scbpp;
int baseB, fcnt, emask, verts;
union comboval ocb;
- struct overlap_info vertices[1];
+ struct overlap_info ovi;
char tmp[128];
- /*
- * XXX: when I made functions static gcc started warning about
- * some members of vertices[0] maybe being used uninitialized.
- * For now, I'm just going to clear it rather than wade through
- * the logic to find out whether gcc or the code is wrong. I
- * wouldn't be surprised if it were the code though. - dholland
- */
- memset(vertices, 0, sizeof(vertices));
-
ocb.s = cv;
baseB = ocb.cv_force + ocb.cv_win - 1;
fcnt = ocb.cv_force - 2;
@@ -680,13 +671,13 @@
for (struct elist *ep = osp->s_empty; ep != NULL; ep = ep->e_next) {
/* check for various kinds of overlap */
cbp = ep->e_combo;
- verts = checkframes(cbp, ocbp, osp, cv, vertices);
+ verts = checkframes(cbp, ocbp, osp, cv, &ovi);
if (verts < 0)
continue;
/* check to see if this frame forms a valid loop */
if (verts > 0) {
- sp = &board[vertices[0].o_intersect];
+ sp = &board[ovi.o_intersect];
#ifdef DEBUG
if (sp->s_occ != EMPTY) {
debuglog("loop: %c %s", "BW"[curcolor],
@@ -754,15 +745,14 @@
ncbp->c_emask[0] = ep->e_emask;
if (verts != 0) {
ncbp->c_flags |= C_LOOP;
- ncbp->c_dir = vertices[0].o_frameindex;
+ ncbp->c_dir = ovi.o_frameindex;
ncbp->c_framecnt[1] = fcnt - 1;
if (ncbp->c_framecnt[1] != 0) {
- n = (vertices[0].o_intersect - ocbp->c_vertex) /
- dd[ocbp->c_dir];
+ n = (ovi.o_intersect - ocbp->c_vertex) / dd[ocbp->c_dir];
ncbp->c_emask[1] = emask & ~(1 << n);
} else
ncbp->c_emask[1] = 0;
- ncbp->c_voff[0] = vertices[0].o_off;
+ ncbp->c_voff[0] = ovi.o_off;
} else {
ncbp->c_dir = 0;
ncbp->c_framecnt[1] = fcnt;
@@ -1074,14 +1064,14 @@
* Return zero if it is valid to combine frame 'fcbp' with the frames
* in 'cbp' and forms a linked chain of frames (i.e., a tree; no loops).
* Return positive if combining frame 'fcbp' to the frames in 'cbp'
- * would form some kind of valid loop. Also return the intersection spots
- * in 'vertices[]' beside the known intersection at spot 'osp'.
+ * would form some kind of valid loop. Also return the intersection spot
+ * in 'ovi' beside the known intersection at spot 'osp'.
* Return -1 if 'fcbp' should not be combined with 'cbp'.
* 'cv' is the combo value for frame 'fcbp'.
*/
static int
checkframes(struct combostr *cbp, struct combostr *fcbp, struct spotstr *osp,
- u_short cv, struct overlap_info *vertices)
+ u_short cv, struct overlap_info *ovi)
{
struct combostr *tcbp, *lcbp;
int ovbit, n, mask, flags, fcnt;
@@ -1148,10 +1138,10 @@
s == fcbp->c_vertex + 5 * dd[fcbp->c_dir]))
return -1; /* invalid overlap */
- vertices->o_intersect = s;
- vertices->o_off = (s - tcbp->c_vertex) /
+ ovi->o_intersect = s;
+ ovi->o_off = (s - tcbp->c_vertex) /
dd[tcbp->c_dir];
- vertices->o_frameindex = myindex;
+ ovi->o_frameindex = myindex;
verts++;
}
}
@@ -1196,10 +1186,10 @@
s == fcbp->c_vertex + 5 * dd[fcbp->c_dir]))
return -1; /* invalid overlap */
- vertices->o_intersect = s;
- vertices->o_off = (s - cbp->c_vertex) /
+ ovi->o_intersect = s;
+ ovi->o_off = (s - cbp->c_vertex) /
dd[cbp->c_dir];
- vertices->o_frameindex = 0;
+ ovi->o_frameindex = 0;
verts++;
}
}
Home |
Main Index |
Thread Index |
Old Index