Alex Ionescu wrote:
- Browsing some registry keys in regedit causes regedit to crash.
Err, this is because GCC is extremly stupid. It loads a stack structure into ebx, and then the callback code becomes jmp(%ebx).
Could you elaborate. I didn't quite follow in what function/context it loads ebx, and what function it jumps from/to, and where ebx wasn't what it was assumed to be.
The problem is that it restores protected registers before doing the jmp, so ebx is reset to it's value before the function is called...
I guess this needs to be made __volatile,
It's just "volatile" (no leading underscores since it's a C keyword, not a language extension).
/Mike