This wasn’t a runtime bug, but two(!!) compile-time bugs that I checked in for others to find :\
Not all code is compiled with the same warning levels everywhere, so something that compiles without warning in one application with a lower warning level may not compile in another with a higher warning level (assuming warnings-as-errors).
After finding no-longer-needed uses of a particular macro, I did not delete my finder code. But taking the address of a class’ member function and not doing anything with it can be warning-inducing. Bah.
And one of the former users of the macro was left with a no-longer-used variable after my changes, This was code I had failed to delete on the first pass. I am disappointed with myself to have not deleted more code when I first had the chance.
How should I avoid such problems in the future? Compile code I change for all targets/configurations/applications that matter.
Sometimes one can be too lazy.