>>615
そりゃまずい・・・
ではこれを追加したらよいかな?

volatile bool entering_push;

void push()
{
 entering_push = true;
 ...
 entering_push = false;
}

void *pop()
{
 if(entering_push && size() < 3)
  return 0;
 ...
}