[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnugo-devel] Array bound violation in 3.1.10
From: |
Teun Burgers |
Subject: |
[gnugo-devel] Array bound violation in 3.1.10 |
Date: |
Mon, 15 Oct 2001 18:34:24 +0200 |
This patch fixes an array bound violation
due to a bug in draw_back
- bugfix in draw_back
- Add ON_BOARD1 assertions in liberty_of_string
and neighbour_of_string
Teun
diff -ru gnugo-3.1.10/engine/board.c gx310x/engine/board.c
--- gnugo-3.1.10/engine/board.c Sat Oct 13 15:56:12 2001
+++ gx310x/engine/board.c Mon Oct 15 12:45:42 2001
@@ -1664,6 +1664,8 @@
int
liberty_of_string(int pos, int str)
{
+ ASSERT_ON_BOARD1(pos);
+ ASSERT_ON_BOARD1(str);
if (IS_STONE(board[pos]))
return 0;
@@ -1681,6 +1683,8 @@
int s;
int color = board[str];
+ ASSERT_ON_BOARD1(str);
+ ASSERT_ON_BOARD1(pos);
ASSERT1(IS_STONE(color), str);
if (!strings_initialized)
diff -ru gnugo-3.1.10/engine/reading.c gx310x/engine/reading.c
--- gnugo-3.1.10/engine/reading.c Sat Oct 13 02:21:43 2001
+++ gx310x/engine/reading.c Mon Oct 15 12:53:07 2001
@@ -4194,10 +4194,14 @@
findlib(adjs[r], 2, libs);
for (k = 0; k < 2; k++) {
if (!liberty_of_string(libs[k], str)
- && (liberty_of_string(SOUTH(libs[k]), str)
- || liberty_of_string(WEST(libs[k]), str)
- || liberty_of_string(NORTH(libs[k]), str)
- || liberty_of_string(EAST(libs[k]), str))) {
+ && ((ON_BOARD1(SOUTH(libs[k]))
+ && liberty_of_string(SOUTH(libs[k]), str))
+ || (ON_BOARD1(WEST(libs[k]))
+ && liberty_of_string(WEST(libs[k]), str))
+ || (ON_BOARD1(NORTH(libs[k]))
+ && liberty_of_string(NORTH(libs[k]), str))
+ || (ON_BOARD1(EAST(libs[k]))
+ && liberty_of_string(EAST(libs[k]), str)))) {
if (trymove(libs[k], OTHER_COLOR(board[str]), "draw_back", str,
komaster, kom_pos)) {
int dcode = do_find_defense(str, NULL, komaster, kom_pos);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnugo-devel] Array bound violation in 3.1.10,
Teun Burgers <=