Martin wrote:
> I have noticed that Quarry violates the GTP specification when using a
> handicap of 0 or 1. According to GTP v. 2, when the handicap command is
> issued, the argument has to be at least 2, i.e. if there is no handicap,
> the handicap command must not be used. GnuGO rejects a handicap of less
> than 2 and Quarry will exit with an assertion violation on
> assert(successful) in initialize_gtp_player.
> 
> I have used the following to be able to play without handicap, but I'm
> not sure this is the right way to do it.

Thank you for the report.  I fixed it a bit differently (but in the same
function).  The patch is below.  I'll commit it later today.

These days I don't have time to work on Quarry, so the development is
stalled.

Paul



--- gtk-goban-window.c  13 May 2004 00:25:35 +0300      1.11
+++ gtk-goban-window.c  21 May 2004 16:05:07 +0300      
@@ -1453,29 +1453,25 @@ initialize_gtp_player(GtpClient *client,
     if (game_tree->game == GAME_GO) {
       int handicap = sgf_node_get_handicap(root_node);
 
-      if (handicap != -1) {
+      if (handicap > 0) {
        gboolean is_fixed_handicap = FALSE;
        const BoardPositionList *handicap_stones = NULL;
 
-       if (handicap > 0) {
-         handicap_stones
-           = sgf_node_get_list_of_point_property_value(root_node,
-                                                       SGF_ADD_BLACK);
-         if (handicap_stones) {
-           BoardPositionList *fixed_handicap_stones
-             = go_get_fixed_handicap_stones(game_tree->board_width,
-                                            game_tree->board_height,
-                                            handicap);
-
-           if (board_position_lists_are_equal(fixed_handicap_stones,
-                                              handicap_stones))
-             is_fixed_handicap = TRUE;
+       handicap_stones
+         = sgf_node_get_list_of_point_property_value(root_node,
+                                                     SGF_ADD_BLACK);
+       if (handicap_stones) {
+         BoardPositionList *fixed_handicap_stones
+           = go_get_fixed_handicap_stones(game_tree->board_width,
+                                          game_tree->board_height,
+                                          handicap);
+
+         if (board_position_lists_are_equal(fixed_handicap_stones,
+                                            handicap_stones))
+           is_fixed_handicap = TRUE;
 
-           board_position_list_delete(fixed_handicap_stones);
-         }
+         board_position_list_delete(fixed_handicap_stones);
        }
-       else
-         is_fixed_handicap = TRUE;
 
        if (is_fixed_handicap) {
          *initialization_step = INITIALIZATION_FIXED_HANDICAP_SET;

Reply via email to