The tricky part is of coruse that you can't (or shouldn't) block inside the ISR, so you may find that the right thing to do is either to ENSURE that you never update stuff that ReadData() uses [e.g. readPtr] inside the ISR, or have some sort of "make this ISR happen at a later stage" type mechanism.
--
Mats