I suspect that sometimes the following expression "&a->b" is evaluated as :
... but it should be &(a->n) ? Right ?
yes -> have higher priority than &
So, my bug is somewhere else !
It is a good practice not to rely on C precedence rules (except the most obvious ones, such as * over +) and to use parentheses whenever there's a possibility of doubt.