Now I'm wondering whether a typical (non GCC) C compiler of the time (~1999) would compile this
It shouldn't. The C99 standard says:
"Except when it is the operand of the sizeof operator, the _Alignof operator, the
unary & operator, the++operator, the--operator, or the left operand of the. operator
or an assignment operator, an lvalue that does not have array type is converted to the
value stored in the designated object (and is no longer an lvalue)" (6.3.2.1.2)
So you shouldn't be able to cast to void** before ++.
The compliant way is to add sizeof(void*) to it instead of casting and incrementing, just as they do few lines earlier.