# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: package/.../gnubg/gcc4.patch
# Copyright (C) 2008 The OpenSDE Project
# Copyright (C) 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# This patch file is dual-licensed. It is available under the license the
# patched project is licensed under, as long as it is an OpenSource license
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
# of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
# --- SDE-COPYRIGHT-NOTE-END ---

diff -Nur gnubg-0.14.3-orig/eval.c gnubg-0.14.3/eval.c
--- gnubg-0.14.3-orig/eval.c	2004-05-07 05:20:21.000000000 +0000
+++ gnubg-0.14.3/eval.c	2006-01-26 13:30:59.383449250 +0000
@@ -798,7 +798,10 @@
 	    if( !fstat( h, &st ) &&
 		( p = mmap( NULL, st.st_size, PROT_READ | PROT_WRITE,
 			    MAP_PRIVATE, h, 0 ) ) ) {
-		( (float *) p ) += 2; /* skip magic number and version */
+//		( (float *) p ) += 2; /* skip magic number and version */
+		float *pf = p;
+		p += 2;
+		p = pf;
 		fReadWeights =
 		    ( p = NeuralNetCreateDirect( &nnContact, p ) ) &&
 		    ( p = NeuralNetCreateDirect( &nnRace, p ) ) &&
diff -Nur gnubg-0.14.3-orig/lib/neuralnet.c gnubg-0.14.3/lib/neuralnet.c
--- gnubg-0.14.3-orig/lib/neuralnet.c	2004-02-24 10:15:50.000000000 +0000
+++ gnubg-0.14.3/lib/neuralnet.c	2006-01-26 13:24:02.577400500 +0000
@@ -386,13 +386,23 @@
 }
 extern void *NeuralNetCreateDirect( neuralnet *pnn, void *p ) {
  
-   pnn->cInput = *( ( (int *) p )++ );
-   pnn->cHidden = *( ( (int *) p )++ );
-   pnn->cOutput = *( ( (int *) p )++ );
-   pnn->nTrained = *( ( (int *) p )++ );
+   float *fp;
+   int *ip = ( int *)p;
+
+   pnn->cInput = *ip;
+   ip++;
+   pnn->cHidden = *ip;
+   ip++;
+   pnn->cOutput = *ip;
+   ip++;
+   pnn->nTrained = *ip;
+   ip++;
    pnn->fDirect = TRUE;
-   pnn->rBetaHidden = *( ( (float *) p )++ );
-   pnn->rBetaOutput = *( ( (float *) p )++ );
+   fp = (float*)ip;
+   pnn->rBetaHidden = *fp;
+   fp++;
+   pnn->rBetaOutput = *fp;
+   fp++;
  
    if( pnn->cInput < 1 || pnn->cHidden < 1 || pnn->cOutput < 1 ||
      pnn->nTrained < 0 || pnn->rBetaHidden <= 0.0 ||
@@ -402,19 +412,19 @@
      return NULL;
    }
  
-   pnn->arHiddenWeight = p;
-   ( (float *) p ) += pnn->cInput * pnn->cHidden;
-   pnn->arOutputWeight = p;
-   ( (float *) p ) += pnn->cHidden * pnn->cOutput;
-   pnn->arHiddenThreshold = p;
-   ( (float *) p ) += pnn->cHidden;
-   pnn->arOutputThreshold = p;
-   ( (float *) p ) += pnn->cOutput;
+   pnn->arHiddenWeight = fp;
+   fp += pnn->cInput * pnn->cHidden;
+   pnn->arOutputWeight = fp;
+   fp += pnn->cHidden * pnn->cOutput;
+   pnn->arHiddenThreshold = fp;
+   fp += pnn->cHidden;
+   pnn->arOutputThreshold = fp;
+   fp += pnn->cOutput;
 
    pnn->savedBase = malloc( pnn->cHidden * sizeof( float ) ); 
    pnn->savedIBase = malloc( pnn->cInput * sizeof( float ) ); 
 
-   return p;
+   return fp;
 }
 
 extern int
diff -Nur gnubg-0.14.3-orig/rollout.c gnubg-0.14.3/rollout.c
--- gnubg-0.14.3-orig/rollout.c	2004-05-07 05:20:21.000000000 +0000
+++ gnubg-0.14.3/rollout.c	2006-01-26 13:32:38.445640250 +0000
@@ -219,7 +219,7 @@
     nPermutationSeed = n;
 }
 
-static int nSkip;
+int nSkip;
 
 static int RolloutDice( int iTurn, int iGame, int cGames,
                             int fInitial,