На линии:
if ( oData->bufpos ...
Тип bufpos по-прежнему не действителен *.Компилятор не знает, на что указывает этот указатель, поэтому он выдает эту ошибку.
Для арифметики с указателем, void * не имеет размера, поэтому брать смещение или делать другую арифметику с указателем не имеет смысла,Приведите его к символу *, если вы хотите сместить его на количество байтов:
if(((char*)oData->bufpos) + offset ...
Отредактировано после того, как было дано больше кода / контекста
Если вы можете помочьпопробуйте использовать char * вместо void *.Люди в C-land будут знать, о чем вы говорите, потому что символы - это байты, и вы избавите себя от головной боли при касте.