// Get number of bytes read so faru32 getNumBytes() const{ if(m_nOffset&8) return m_nOffset/8 + 1; return m_nOffset/8;}
I spent 3 hours tracking down this sodding save CRC bug. The problem is that the CRC was right all along, it was just saving one byte too few (The CRC is at the end of the data), so the last few bits of the CRC were chopped off.
See if you can spot the bug, it's reasonably obvious (m_nOffset is in bits).