Module Name: src
Committed By: rillig
Date: Mon May 16 19:55:58 UTC 2022
Modified Files:
src/games/gomoku: Makefile bdinit.c bdisp.c main.c makemove.c
pickmove.c
Log Message:
gomoku: fix lint warnings
Most warnings were about implicit conversions from ptrdiff_t to int; add
explicit cast for them, as they are far from overflowing int.
The casts from one pointer type to 'struct combostr **' were indeed
suspicious. In these cases, a single region of memory is allocated to
store two objects of different type, without declaring a struct type for
their combination. The second object is an array of variable size.
No binary change.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/games/gomoku/Makefile
cvs rdiff -u -r1.11 -r1.12 src/games/gomoku/bdinit.c
cvs rdiff -u -r1.22 -r1.23 src/games/gomoku/bdisp.c
cvs rdiff -u -r1.31 -r1.32 src/games/gomoku/main.c
cvs rdiff -u -r1.13 -r1.14 src/games/gomoku/makemove.c
cvs rdiff -u -r1.28 -r1.29 src/games/gomoku/pickmove.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/games/gomoku/Makefile
diff -u src/games/gomoku/Makefile:1.5 src/games/gomoku/Makefile:1.6
--- src/games/gomoku/Makefile:1.5 Sat Feb 6 23:45:25 2010
+++ src/games/gomoku/Makefile Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.5 2010/02/06 23:45:25 he Exp $
+# $NetBSD: Makefile,v 1.6 2022/05/16 19:55:58 rillig Exp $
# @(#)Makefile 8.1 (Berkeley) 7/24/94
PROG= gomoku
@@ -8,4 +8,6 @@ DPADD= ${LIBCURSES} ${LIBTERMINFO}
LDADD= -lcurses -lterminfo
HIDEGAME=hidegame
+LINTFLAGS+= -w # treat warnings as errors
+
.include <bsd.prog.mk>
Index: src/games/gomoku/bdinit.c
diff -u src/games/gomoku/bdinit.c:1.11 src/games/gomoku/bdinit.c:1.12
--- src/games/gomoku/bdinit.c:1.11 Sun May 15 22:56:20 2022
+++ src/games/gomoku/bdinit.c Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bdinit.c,v 1.11 2022/05/15 22:56:20 rillig Exp $ */
+/* $NetBSD: bdinit.c,v 1.12 2022/05/16 19:55:58 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "from: @(#)bdinit.c 8.2 (Berkeley) 5/3/95";
#else
-__RCSID("$NetBSD: bdinit.c,v 1.11 2022/05/15 22:56:20 rillig Exp $");
+__RCSID("$NetBSD: bdinit.c,v 1.12 2022/05/16 19:55:58 rillig Exp $");
#endif
#endif /* not lint */
@@ -133,7 +133,7 @@ bdinit(struct spotstr *bp)
if (sp->s_flags & (BFLAG << r))
continue;
cbp->c_combo.s = sp->s_fval[BLACK][r].s;
- cbp->c_vertex = sp - board;
+ cbp->c_vertex = (u_short)(sp - board);
cbp->c_nframes = 1;
cbp->c_dir = r;
sp->s_frame[r] = cbp;
@@ -213,7 +213,7 @@ init_overlap(void)
break;
if (sp2->s_flags & bmask)
continue;
- n = sp2->s_frame[r] - frames;
+ n = (int)(sp2->s_frame[r] - frames);
ip[n] = vertex;
str[n] |= (f == 5) ? mask & 0xA : mask;
if (r == cbp->c_dir) {
Index: src/games/gomoku/bdisp.c
diff -u src/games/gomoku/bdisp.c:1.22 src/games/gomoku/bdisp.c:1.23
--- src/games/gomoku/bdisp.c:1.22 Sun May 15 22:56:20 2022
+++ src/games/gomoku/bdisp.c Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bdisp.c,v 1.22 2022/05/15 22:56:20 rillig Exp $ */
+/* $NetBSD: bdisp.c,v 1.23 2022/05/16 19:55:58 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)bdisp.c 8.2 (Berkeley) 5/3/95";
#else
-__RCSID("$NetBSD: bdisp.c,v 1.22 2022/05/15 22:56:20 rillig Exp $");
+__RCSID("$NetBSD: bdisp.c,v 1.23 2022/05/16 19:55:58 rillig Exp $");
#endif
#endif /* not lint */
@@ -134,8 +134,8 @@ bdwho(int update)
move(21, 0);
printw(" ");
- i = strlen(plyr[BLACK]);
- j = strlen(plyr[WHITE]);
+ i = (int)strlen(plyr[BLACK]);
+ j = (int)strlen(plyr[WHITE]);
if (i + j <= 20) {
move(21, 10 - (i + j) / 2);
printw("BLACK/%s (*) vs. WHITE/%s (O)",
@@ -248,7 +248,7 @@ dislog(const char *str)
void
ask(const char *str)
{
- int len = strlen(str);
+ int len = (int)strlen(str);
move(BSZ + 4, 0);
addstr(str);
Index: src/games/gomoku/main.c
diff -u src/games/gomoku/main.c:1.31 src/games/gomoku/main.c:1.32
--- src/games/gomoku/main.c:1.31 Sun May 15 22:56:20 2022
+++ src/games/gomoku/main.c Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.31 2022/05/15 22:56:20 rillig Exp $ */
+/* $NetBSD: main.c,v 1.32 2022/05/16 19:55:58 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1994\
#if 0
static char sccsid[] = "@(#)main.c 8.4 (Berkeley) 5/4/95";
#else
-__RCSID("$NetBSD: main.c,v 1.31 2022/05/15 22:56:20 rillig Exp $");
+__RCSID("$NetBSD: main.c,v 1.32 2022/05/16 19:55:58 rillig Exp $");
#endif
#endif /* not lint */
@@ -141,7 +141,7 @@ main(int argc, char **argv)
}
if (!debug)
- srandom(time(0));
+ srandom((unsigned int)time(0));
if (interactive)
cursinit(); /* initialize curses */
again:
Index: src/games/gomoku/makemove.c
diff -u src/games/gomoku/makemove.c:1.13 src/games/gomoku/makemove.c:1.14
--- src/games/gomoku/makemove.c:1.13 Sun May 15 22:08:05 2022
+++ src/games/gomoku/makemove.c Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: makemove.c,v 1.13 2022/05/15 22:08:05 rillig Exp $ */
+/* $NetBSD: makemove.c,v 1.14 2022/05/16 19:55:58 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)makemove.c 8.2 (Berkeley) 5/3/95";
#else
-__RCSID("$NetBSD: makemove.c,v 1.13 2022/05/15 22:08:05 rillig Exp $");
+__RCSID("$NetBSD: makemove.c,v 1.14 2022/05/16 19:55:58 rillig Exp $");
#endif
#endif /* not lint */
@@ -243,7 +243,7 @@ update_overlap(struct spotstr *osp)
* do the rows 0 <= r1 <= r. The r1 == r case is special
* since the two frames can overlap at more than one point.
*/
- str = &overlap[(a = sp1->s_frame[r] - frames) * FAREA];
+ str = &overlap[(a = (int)(sp1->s_frame[r] - frames)) * FAREA];
sp2 = sp1 - d;
for (i = f + 1; i < 6; i++, sp2 -= d) {
if (sp2->s_occ == BORDER)
@@ -262,12 +262,12 @@ update_overlap(struct spotstr *osp)
n++;
}
}
- b = sp2->s_frame[r] - frames;
+ b = (int)(sp2->s_frame[r] - frames);
if (n == 0) {
if (sp->s_occ == EMPTY) {
str[b] &= 0xA;
overlap[b * FAREA + a] &= 0xC;
- intersect[a * FAREA + b] = n = sp - board;
+ intersect[a * FAREA + b] = n = (int)(sp - board);
intersect[b * FAREA + a] = n;
} else {
str[b] = 0;
@@ -281,7 +281,7 @@ update_overlap(struct spotstr *osp)
str[b] &= 0xF;
overlap[b * FAREA + a] &= 0xF;
}
- intersect[a * FAREA + b] = n = esp - board;
+ intersect[a * FAREA + b] = n = (int)(esp - board);
intersect[b * FAREA + a] = n;
}
/* else no change, still multiple overlap */
@@ -297,7 +297,7 @@ update_overlap(struct spotstr *osp)
break;
if (sp->s_flags & bmask1)
continue;
- b = sp->s_frame[r1] - frames;
+ b = (int)(sp->s_frame[r1] - frames);
str[b] = 0;
overlap[b * FAREA + a] = 0;
}
Index: src/games/gomoku/pickmove.c
diff -u src/games/gomoku/pickmove.c:1.28 src/games/gomoku/pickmove.c:1.29
--- src/games/gomoku/pickmove.c:1.28 Mon May 16 19:20:25 2022
+++ src/games/gomoku/pickmove.c Mon May 16 19:55:58 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: pickmove.c,v 1.28 2022/05/16 19:20:25 rillig Exp $ */
+/* $NetBSD: pickmove.c,v 1.29 2022/05/16 19:55:58 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)pickmove.c 8.2 (Berkeley) 5/3/95";
#else
-__RCSID("$NetBSD: pickmove.c,v 1.28 2022/05/16 19:20:25 rillig Exp $");
+__RCSID("$NetBSD: pickmove.c,v 1.29 2022/05/16 19:55:58 rillig Exp $");
#endif
#endif /* not lint */
@@ -128,7 +128,7 @@ pickmove(int us)
if (debug && (sp->s_combo[BLACK].c.a == 1 ||
sp->s_combo[WHITE].c.a == 1)) {
debuglog("- %s %x/%d %d %x/%d %d %d",
- stoc(sp - board),
+ stoc((int)(sp - board)),
sp->s_combo[BLACK].s, sp->s_level[BLACK],
sp->s_nforce[BLACK],
sp->s_combo[WHITE].s, sp->s_level[WHITE],
@@ -145,13 +145,13 @@ pickmove(int us)
if (debug) {
debuglog("B %s %x/%d %d %x/%d %d %d",
- stoc(sp1 - board),
+ stoc((int)(sp1 - board)),
sp1->s_combo[BLACK].s, sp1->s_level[BLACK],
sp1->s_nforce[BLACK],
sp1->s_combo[WHITE].s, sp1->s_level[WHITE],
sp1->s_nforce[WHITE], sp1->s_wval);
debuglog("W %s %x/%d %d %x/%d %d %d",
- stoc(sp2 - board),
+ stoc((int)(sp2 - board)),
sp2->s_combo[WHITE].s, sp2->s_level[WHITE],
sp2->s_nforce[WHITE],
sp2->s_combo[BLACK].s, sp2->s_level[BLACK],
@@ -161,7 +161,7 @@ pickmove(int us)
* all be blocked with one move.
*/
sp = (us == BLACK) ? sp2 : sp1;
- m = sp - board;
+ m = (int)(sp - board);
if (sp->s_combo[!us].c.a == 1 && !BIT_TEST(forcemap, m))
debuglog("*** Can't be blocked");
}
@@ -182,8 +182,8 @@ pickmove(int us)
*/
if (Tcp->c.a <= 1 && (Ocp->c.a > 1 ||
Tcp->c.a + Tcp->c.b < Ocp->c.a + Ocp->c.b))
- return sp2 - board;
- return sp1 - board;
+ return (int)(sp2 - board);
+ return (int)(sp1 - board);
}
/*
@@ -202,8 +202,8 @@ better(const struct spotstr *sp, const s
return sp->s_nforce[us] > sp1->s_nforce[us];
them = !us;
- s = sp - board;
- s1 = sp1 - board;
+ s = (int)(sp - board);
+ s1 = (int)(sp1 - board);
if ((BIT_TEST(forcemap, s) != 0) != (BIT_TEST(forcemap, s1) != 0))
return BIT_TEST(forcemap, s) != 0;
@@ -307,7 +307,7 @@ scanframes(int color)
if (cp->s == 0x101) {
sp->s_nforce[color]++;
if (color != nextcolor) {
- n = sp - board;
+ n = (int)(sp - board);
BIT_SET(tmpmap, n);
}
}
@@ -334,6 +334,7 @@ scanframes(int color)
* Limit the search depth early in the game.
*/
d = 2;
+ /* LINTED 117: bitwise '>>' on signed value possibly nonportable */
while (d <= ((movenum + 1) >> 1) && combolen > n) {
if (debug) {
debuglog("%cL%d %d %d %d", "BW"[color],
@@ -474,7 +475,7 @@ makecombo2(struct combostr *ocbp, struct
2 * sizeof(struct combostr *));
if (ncbp == NULL)
panic("Out of memory!");
- scbpp = (struct combostr **)(ncbp + 1);
+ scbpp = (void *)(ncbp + 1);
fcbp = fsp->s_frame[r];
if (ocbp < fcbp) {
scbpp[0] = ocbp;
@@ -491,7 +492,7 @@ makecombo2(struct combostr *ocbp, struct
ncbp->c_linkv[1].s = fcb.s;
ncbp->c_voff[0] = off;
ncbp->c_voff[1] = f;
- ncbp->c_vertex = osp - board;
+ ncbp->c_vertex = (u_short)(osp - board);
ncbp->c_nframes = 2;
ncbp->c_dir = 0;
ncbp->c_frameindex = 0;
@@ -720,8 +721,8 @@ makecombo(struct combostr *ocbp, struct
(cbp->c_nframes + 1) * sizeof(struct combostr *));
if (ncbp == NULL)
panic("Out of memory!");
- scbpp = (struct combostr **)(ncbp + 1);
- if (sortcombo(scbpp, (struct combostr **)(cbp + 1), ocbp)) {
+ scbpp = (void *)(ncbp + 1);
+ if (sortcombo(scbpp, (void *)(cbp + 1), ocbp)) {
free(ncbp);
continue;
}
@@ -733,7 +734,7 @@ makecombo(struct combostr *ocbp, struct
ncbp->c_link[1] = ocbp;
ncbp->c_linkv[1].s = ocb.s;
ncbp->c_voff[1] = off;
- ncbp->c_vertex = osp - board;
+ ncbp->c_vertex = (u_short)(osp - board);
ncbp->c_nframes = cbp->c_nframes + 1;
ncbp->c_flags = ocb.c.b ? C_OPEN_1 : 0;
ncbp->c_frameindex = ep->e_frameindex;
@@ -932,7 +933,7 @@ makeempty(struct combostr *ocbp)
nep->e_fval.s = ep->e_fval.s;
if (debug > 2) {
debuglog("e %s o%d i%d c%d m%x %x",
- stoc(sp - board),
+ stoc((int)(sp - board)),
nep->e_off,
nep->e_frameindex,
nep->e_framecnt,
@@ -1089,7 +1090,7 @@ checkframes(struct combostr *cbp, struct
fcnt = cb.c.a - 2;
verts = 0;
myindex = cbp->c_nframes;
- n = (fcbp - frames) * FAREA;
+ n = (int)(fcbp - frames) * FAREA;
str = &overlap[n];
ip = &intersect[n];
/*
@@ -1249,21 +1250,20 @@ sortcombo(struct combostr **scbpp, struc
inserted:
/* now check to see if this list of frames has already been seen */
- cbp = hashcombos[inx = *scbpp - frames];
+ cbp = hashcombos[inx = (int)(*scbpp - frames)];
if (cbp == (struct combostr *)0) {
/*
* Easy case, this list hasn't been seen.
* Add it to the hash list.
*/
- fcbp = (struct combostr *)
- ((char *)scbpp - sizeof(struct combostr));
+ fcbp = (void *)((char *)scbpp - sizeof(struct combostr));
hashcombos[inx] = fcbp;
fcbp->c_next = fcbp->c_prev = fcbp;
return 0;
}
ecbp = cbp;
do {
- cbpp = (struct combostr **)(cbp + 1);
+ cbpp = (void *)(cbp + 1);
cpp = cbpp + n;
spp = scbpp + n;
cbpp++; /* first frame is always the same */
@@ -1308,7 +1308,7 @@ inserted:
* Add it to the hash list.
*/
ecbp = cbp->c_prev;
- fcbp = (struct combostr *)((char *)scbpp - sizeof(struct combostr));
+ fcbp = (void *)((char *)scbpp - sizeof(struct combostr));
fcbp->c_next = cbp;
fcbp->c_prev = ecbp;
cbp->c_prev = fcbp;