I thought of a way the crash can still happen, so I’ll fix it another time…
EDIT: It only happens during reset (like changing game modes in some of the examples/games…)
EDIT2: The fix is in 2.4.8
This function is a little bothersome being in the core (it shouldn’t know about game library stuff…):

All of these strings “run” “draw” etc are part of the game library… but the obfuscator needs to know not to try to obfuscate them… they’re a special kind of function that is called from the internals, so the names have to stay the same.
It’s not a major problem as it’s only part of obfuscation and could be separated by querying libraries for callback names.
EDIT3: I just realized I could probably look up the obfuscated name and call that, for these callbacks, so I can remove game library stuff from core…
EDIT4: I think I can add a really simple call_function_obfuscated that relies on call_function. I was worried at first because the _obfuscated function involves a loop of function names, but at what is default 60 times a second, it’s nothing. If you use BooBoo as a library, and obfuscate your code, you’ll have to call call_function_obfuscated instead of call_function to call into BooBoo code. It’ll work whether your code is obfuscated or not, whereas call_function will only work if it isn’t.
EDIT5: I was wrong! There’s no way to fix this dependence on a list of reserved names. Not without forcing you to recompile BooBoo when you obfuscate. Like I said, it’s minor anyway but since the obfuscated code is written before and in a separate execution from launching it, those names like “draw” and “run” need to remain the same because there’s no way to get the real name from a obfuscated name… you could manually edit all those into game_launcher.cpp with each obfuscation… that’s the only other way to do it than a list of special names.
EDIT6: However, I did miss one special name, “end”…