while( true )
{
uint readpos = volatize(m_RingPos);
if( writepos >= readpos ) break;
if( writepos+size < readpos ) break;
}

これはどういう修正なのかkwsk解説が欲しい。