Skip to content

Commit f2bdbbe

Browse files
author
Thumperrr
committed
Fixed a segfault when a piece captured another.
currentPiece was set to the recently deleted captured piece. Operations on currentPiece caused a segfault.
1 parent 8d3dc7c commit f2bdbbe

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

src/Graphics.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ namespace chesspp
6161
Piece* pCurrent = b->getCurrent();
6262
Piece* pSelect = b->getSelected();
6363
if (pSelect)
64-
for (posList::const_iterator iter = pSelect->getTrajectory().begin(); iter != pSelect->getTrajectory().end(); iter++)
64+
for (auto iter = pSelect->getTrajectory().begin(); iter != pSelect->getTrajectory().end(); iter++)
6565
{
66-
if(!iter->isValid()) continue;
67-
drawValidMove(iter->getX(), iter->getY());
66+
if(iter->isValid())
67+
drawValidMove(iter->getX(), iter->getY());
6868
}
6969
else if (pCurrent)
70-
for (posList::const_iterator iter = pCurrent->getTrajectory().begin(); iter != pCurrent->getTrajectory().end(); iter++)
70+
for (auto &iter: pCurrent->getTrajectory())
7171
{
72-
if(!iter->isValid()) continue;
73-
drawValidMove(iter->getX(), iter->getY());
72+
if(iter.isValid())
73+
drawValidMove(iter.getX(), iter.getY());
7474
}
7575

7676
// Draw the non-selected pieces

src/board/Board.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ bool Board::move(Piece* toMove, int screenX, int screenY)
227227
(*iter)->updateTrajectory(this, moveFrom, moveTo);
228228
}
229229

230+
this->currentPiece = NULL; //reset currentPiece to avoid segfault.
230231
return true;
231232
}
232233

src/board/Piece.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace chesspp
2626
return color;
2727
}
2828

29-
const posList& Piece::getTrajectory(void)
29+
const posList& Piece::getTrajectory(void) const
3030
{
3131
return trajectory;
3232
}

src/board/Piece.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ namespace chesspp
5555
const Position& getTexturePos(void) const;
5656
Color getColor(void) const;
5757
Type getType(void) const;
58-
const posList& getTrajectory(void);
58+
const posList& getTrajectory(void) const;
5959

6060
// We need to know these things :)
6161
// If a piece moves, it's trajectory needs to be checked for a king

0 commit comments

Comments
 (0)