Browse Source

Be more defensive when interacting with the path node stacks

pull/2415/head
ephphatha 5 years ago committed by Anders Jenbo
parent
commit
097a519bb7
  1. 11
      Source/path.cpp

11
Source/path.cpp

@ -380,9 +380,9 @@ void path_set_coords(PATHNODE *pPath)
*/ */
void path_push_active_step(PATHNODE *pPath) void path_push_active_step(PATHNODE *pPath)
{ {
int stackIndex = gdwCurPathStep; assert(gdwCurPathStep < MAXPATHNODES);
pnode_tblptr[gdwCurPathStep] = pPath;
gdwCurPathStep++; gdwCurPathStep++;
pnode_tblptr[stackIndex] = pPath;
} }
/** /**
@ -391,6 +391,7 @@ void path_push_active_step(PATHNODE *pPath)
PATHNODE *path_pop_active_step() PATHNODE *path_pop_active_step()
{ {
gdwCurPathStep--; gdwCurPathStep--;
assert(gdwCurPathStep >= 0);
return pnode_tblptr[gdwCurPathStep]; return pnode_tblptr[gdwCurPathStep];
} }
@ -399,12 +400,10 @@ PATHNODE *path_pop_active_step()
*/ */
PATHNODE *path_new_step() PATHNODE *path_new_step()
{ {
PATHNODE *newNode; if (gdwCurNodes >= MAXPATHNODES)
if (gdwCurNodes == MAXPATHNODES)
return nullptr; return nullptr;
newNode = &path_nodes[gdwCurNodes]; PATHNODE *newNode = &path_nodes[gdwCurNodes];
gdwCurNodes++; gdwCurNodes++;
memset(newNode, 0, sizeof(PATHNODE)); memset(newNode, 0, sizeof(PATHNODE));
return newNode; return newNode;

Loading…
Cancel
Save