CheckInfoData устанавливает начало (m_nInfoStart) и размер (m_nInfoSize) info в буфере. Логичнее конечно их записывать и читать (в дальнейшем так и будет). Но на данный момент m_nInfoSize устанавливается до полной загрузки (у себя я уже это изменил и значение m_nInfoSize устанавливается только в CheckInfoData). Если CheckInfoData не пройдет при записи соответственно при загрузке потеряем m_nInfoStart и m_nInfoSize а в m_pSource будет "мусор".
Зачем использовать кучу объектов там где может справится одна функция.