Hi Rudolf, Thanks for spotting this bug, and for the detailed description of the steps you followed. I have reproduced it in the pre-release 6.3.0-pre2. It seems that it was introduced in version 6.2.9.
Your patch looks good and it fixes the problem indeed! Thanks for it! I will include it in the upcoming version 6.3.0. Cheers, Antonio Ceballos On Fri, May 30, 2025 at 3:36 AM Rudolf Polzer <[email protected]> wrote: > Hi, > > I am currently playing around with the GNU Chess engine and patching > around in it for fun, and while doing so, found some minor bugs in the > source. > > As I am new to the project and not yet clear about e.g. the coding > style, let me start with a simple and trivial fix: currently one > cannot correctly load EPD files; the following happens: > > ``` > $ cat t > rnbqkb1r/pppppppp/5n2/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - bm 1; id 1; > $ src/gnuchess --easy > GNU Chess > Can't open file "(null)": Bad address - using defaults > White (1) : post > White (1) : depth 5 > Search to a depth of 5. > White (1) : load t > > : Best move = 1 > > white KQkq > > r n b q k b . r > p p p p p p p p > . . . . . n . . > . . . . . . . . > . . . . P . . . > . . . . . . . . > P P P P . P P P > R N B Q K B N R > > Error loading EPD file 't'. > White (1) : f4 > 1. f4 > > black KQkq f3 > > r n b q k b . r > p p p p p p p p > . . . . . n . . > . . . . . . . . > . . . . P P . . > . . . . . . . . > P P P P . . P P > R N B Q K B N R > > Thinking... > 1 -6 0 2 a5 > White (1) : 1 -1 0 4 b5 > 1 +41 0 8 d5 > 1 +43 0 21 Nc6 > 2 +9 0 47 Nc6 Nc3 > 3 +43 0 155 Nc6 Nc3 Nf6 > 4 +9 0 788 Nc6 Nf3 Nf6 Nc3 > 5 +37 0 2920 Nc6 Nf3 Nf6 Nc3 d5 > 5 +37 1 5024 Nc6 Nf3 Nf6 Nc3 d5 > > white KQkq > > r . b q k b . r > p p p p p p p p > . . n . . n . . > . . . . . . . . > . . . . P P . . > . . . . . . . . > P P P P . . P P > R N B Q K B N R > > > My move is : Nc6 > ``` > > So it's not taking the free pawn on e4. > > If I instead don't load, but play the move from scratch, it reliably will. > > A clue is the "Error loading EPD file 't'." message, and indeed, the > code has a bug there - it uses strlen on a buffer that's initialized > empty (thus is always 0) when clearly sizeof was intended, and on > failure it seems the board is loaded into some variables but not into > others. After this patch: > > ``` > From 7655b2c6bb98d1bfec5852124d05adec34df353d Mon Sep 17 00:00:00 2001 > From: Rudolf Polzer <[email protected]> > Date: Thu, 29 May 2025 06:46:39 -0400 > Subject: [PATCH 1/1] Fix loading EPD files. > > --- > src/frontend/cmd.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/frontend/cmd.cc b/src/frontend/cmd.cc > index f038e62..dacbd66 100644 > --- a/src/frontend/cmd.cc > +++ b/src/frontend/cmd.cc > @@ -394,7 +394,7 @@ void cmd_load(void) > printf (_("Board is wrong!\n")); > } else { > /* Read EPD file and send contents to engine */ > - if (build_setboard_cmd_from_epd_file(data, epd_filename, > strlen(data))) { > + if (build_setboard_cmd_from_epd_file(data, epd_filename, > sizeof(data))) { > SetDataToEngine( data ); > SetAutoGo( true ); > } else { > -- > 2.39.5 > ``` > > it's taking the pawn just fine: > > ``` > $ src/gnuchess --easy > GNU Chess > Can't open file "(null)": Bad address - using defaults > White (1) : post > White (1) : depth 5 > Search to a depth of 5. > White (1) : load t > > : Best move = 1 > > white KQkq > > r n b q k b . r > p p p p p p p p > . . . . . n . . > . . . . . . . . > . . . . P . . . > . . . . . . . . > P P P P . P P P > R N B Q K B N R > > White (1) : f4 > 1. f4 > > black KQkq f3 > > r n b q k b . r > p p p p p p p p > . . . . . n . . > . . . . . . . . > . . . . P P . . > . . . . . . . . > P P P P . . P P > R N B Q K B N R > > Thinking... > Thinking... > 1 +168 0 2 Nxe4 > Black (1) : 2 +130 0 130 Nxe4 Nc3 > 3 +132 0 547 Nxe4 Nc3 d5 Nxe4 dxe4 > 4 +117 0 1471 Nxe4 d3 Nc5 Nc3 > 5 +135 1 5352 Nxe4 Nf3 d5 Nc3 Nc6 Nxe4 dxe4 > 5 +135 1 7197 Nxe4 Nf3 d5 Nc3 Nc6 Nxe4 dxe4 > > white KQkq > > r n b q k b . r > p p p p p p p p > . . . . . . . . > . . . . . . . . > . . . . n P . . > . . . . . . . . > P P P P . . P P > R N B Q K B N R > > > My move is : Nxe4 > ``` > > Does this patch look correct? Hope Gmail didn't ruin things - I can > try using another address if it doesn't work well with this mailing > list, but would like any commits to be associated with this primary > one if possible. > > Thank you, > > Rudolf "divVerent" Polzer > >
