gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gnugo-devel] stack overflow


From: bump
Subject: Re: [gnugo-devel] stack overflow
Date: Sat, 22 Feb 2003 09:21:56 -0800

> FYI, the new new_semeai() function allocates 1,5 Mb on the stack. The VC++
> build doesn't seem to be up to this, and crashes as soon as the function
> is called.
> 
> /nando

Sorry. We need to allocate an array based on how many dragons 
there are or guess a safe upper bound. I guessed 361. This
makes the array size 361^2 and I guess that's too much.

Index: engine/semeai.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/semeai.c,v
retrieving revision 1.50
diff -u -r1.50 semeai.c
--- engine/semeai.c     21 Feb 2003 23:39:50 -0000      1.50
+++ engine/semeai.c     22 Feb 2003 17:16:58 -0000
@@ -94,7 +94,7 @@
  * owl_analyze_semeai() instead of relying on static analysis.
  */
 
-#define MAX_DRAGONS MAX_BOARD*MAX_BOARD
+#define MAX_DRAGONS 50
 
 void
 new_semeai(int color)
@@ -105,8 +105,10 @@
   int d1, d2;
   int k;
   int other = OTHER_COLOR(color);
+  int num_dragons = number_of_dragons;
 
-  gg_assert (number_of_dragons <= MAX_DRAGONS);
+  if (num_dragons > MAX_DRAGONS)
+    num_dragons = MAX_DRAGONS;
 
   for (d1 = 0; d1 < number_of_dragons; d1++)
     for (d2 = 0; d2 < number_of_dragons; d2++) {




reply via email to

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