[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnugo-devel] more bugfixes
From: |
Evan Berggren Daniel |
Subject: |
[gnugo-devel] more bugfixes |
Date: |
Sat, 9 Nov 2002 19:43:16 -0500 (EST) |
A collection of bugfixes Paul and I put together.
- findlib() was returning a more liberties than it had copied if liberties
> maxlib. This would cause a crash in some cases (namely, my current work
with attack5/defend5. I can send in the version that has problems if
desired).
- approxlib() was making unneccessary compares of the form liberties <
maxlib.
- owl1:268 was incorrect (should have been written [3 A1]). It is also
equivalent to trevor:360. owl1:268 is commented out and trevor:360 is
corrected to be more specific.
There should be no regression delta, though I have only checked
reading.tst.
Thanks
Evan Daniel
Index: engine/board.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/board.c,v
retrieving revision 1.55
diff -u -r1.55 board.c
--- engine/board.c 23 Oct 2002 18:32:35 -0000 1.55
+++ engine/board.c 10 Nov 2002 00:36:30 -0000
@@ -1968,12 +1968,14 @@
*/
s = string_number[str];
liberties = string[s].liberties;
+ if (liberties > maxlib)
+ liberties = maxlib;
- if (liberties <= MAX_LIBERTIES || maxlib <= MAX_LIBERTIES) {
+ if (liberties <= MAX_LIBERTIES) {
/* The easy case, it suffices to copy liberty locations from the
* incrementally updated list.
*/
- for (k = 0; k < maxlib && k < liberties; k++)
+ for (k = 0; k < liberties; k++)
libs[k] = string[s].libs[k];
}
else {
@@ -1985,33 +1987,33 @@
int pos;
liberty_mark++;
for (k = 0, pos = FIRST_STONE(s);
- k < maxlib && k < liberties;
+ k < liberties;
pos = NEXT_STONE(pos)) {
if (UNMARKED_LIBERTY(SOUTH(pos))) {
libs[k++] = SOUTH(pos);
MARK_LIBERTY(SOUTH(pos));
- if (k >= maxlib)
+ if (k >= liberties)
break;
}
if (UNMARKED_LIBERTY(WEST(pos))) {
libs[k++] = WEST(pos);
MARK_LIBERTY(WEST(pos));
- if (k >= maxlib)
+ if (k >= liberties)
break;
}
if (UNMARKED_LIBERTY(NORTH(pos))) {
libs[k++] = NORTH(pos);
MARK_LIBERTY(NORTH(pos));
- if (k >= maxlib)
+ if (k >= liberties)
break;
}
if (UNMARKED_LIBERTY(EAST(pos))) {
libs[k++] = EAST(pos);
MARK_LIBERTY(EAST(pos));
- if (k >= maxlib)
+ if (k >= liberties)
break;
}
}
@@ -2168,7 +2170,7 @@
for (k = 0; k < string[s].liberties; k++) {
int lib = string[s].libs[k];
if (UNMARKED_LIBERTY(lib)) {
- if (libs != NULL && liberties < maxlib)
+ if (libs != NULL)
libs[liberties] = lib;
liberties++;
if (liberties >= maxlib)
@@ -2192,7 +2194,7 @@
for (k = 0; k < string[s].liberties; k++) {
int lib = string[s].libs[k];
if (UNMARKED_LIBERTY(lib)) {
- if (libs != NULL && liberties < maxlib)
+ if (libs != NULL)
libs[liberties] = lib;
liberties++;
if (liberties >= maxlib)
@@ -2216,7 +2218,7 @@
for (k = 0; k < string[s].liberties; k++) {
int lib = string[s].libs[k];
if (UNMARKED_LIBERTY(lib)) {
- if (libs != NULL && liberties < maxlib)
+ if (libs != NULL)
libs[liberties] = lib;
liberties++;
if (liberties >= maxlib)
@@ -2227,7 +2229,7 @@
}
if (UNMARKED_LIBERTY(EAST(pos))) {
- if (libs != NULL && liberties < maxlib)
+ if (libs != NULL)
libs[liberties] = EAST(pos);
liberties++;
/* Stop counting if we reach maxlib. */
@@ -2243,7 +2245,7 @@
for (k = 0; k < string[s].liberties; k++) {
int lib = string[s].libs[k];
if (UNMARKED_LIBERTY(lib)) {
- if (libs != NULL && liberties < maxlib)
+ if (libs != NULL)
libs[liberties] = lib;
liberties++;
if (liberties >= maxlib)
Index: regression/owl1.tst
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/owl1.tst,v
retrieving revision 1.29
diff -u -r1.29 owl1.tst
--- regression/owl1.tst 30 Oct 2002 00:10:16 -0000 1.29
+++ regression/owl1.tst 10 Nov 2002 00:36:30 -0000
@@ -30,9 +30,10 @@
267 owl_defend Q2
#? [2 R3]
-loadsgf games/owl36.sgf
-268 owl_defend A3
-#? [2 A1]*
+#see trevor:360
+#loadsgf games/owl36.sgf
+#268 owl_defend A3
+##? [2 A1]*
loadsgf games/nngs/lindq-gnugo-3.3.4-200207051636.sgf 192
269 owl_defend D11
Index: regression/trevor.tst
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/trevor.tst,v
retrieving revision 1.61
diff -u -r1.61 trevor.tst
--- regression/trevor.tst 30 Oct 2002 00:10:16 -0000 1.61
+++ regression/trevor.tst 10 Nov 2002 00:36:30 -0000
@@ -356,7 +356,7 @@
#SEVERITY=
loadsgf games/trevor/trevor_36.sgf
360 owl_defend G8
-#? [(2|3) J9]
+#? [3 J9]
#CATEGORY=OWL_BUG
#DESCRIPTION=Can safely connect out!
- [gnugo-devel] more bugfixes,
Evan Berggren Daniel <=