gnugo-devel
[Top][All Lists]
Advanced

[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!





reply via email to

[Prev in Thread] Current Thread [Next in Thread]