The code doesn't enter an official fail-state/Assert if HANDMADE_INTERNAL is on but loading of DEBUGGameFrameEnd fails inside Win32LoadGameCode.
The game will accumulating a Debug information but since the DEBUGFrameEnd function pointer is not set it won't collate any so it fills the GlobalDebugTable and crashes after about 2-3 seconds.
TL:DR; If HANDMADE_INTERNAL=1 , but Win32LoadGameCode fails to Load DEBUGGameFrameEnd the game will crash in a few seconds mostly siting the use of a null pointer in the debug_event destructor.
I notice this after I had changed the name of DEBUGGameFrameEnd in the build.bat and the .._debug.cpp to make it consistent with the name of the game_code variable it gets assigned to. ("Luckily" I changed the name before taking a month break from following the series so I had forgotten and the crash baffled me for too many hours.)
fix ex.
Adding Result.DEBUGFrameEnd to the Result.IsValid "calculation" if HANDMADE_INTERNAL=1.
or by adding this to line 2369 in win32_handmade.cpp
| else { Assert(!"DEBUGGameFrameEnd not loaded"); }
|
so we'll assert instead of just skip the FrameEnd function call (this is inside a #if HANDMADE_INTERNAL already.)
Clarification: I write out all the code as I follow the series, only checking the official Handmade code if I notice inconsistencies.