Fix crash in Com_Error when com_noErrorInterrupt is nullptr #8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem:
A crash occurs in Win32 Debug builds when Com_Error is called before the com_noErrorInterrupt cvar is initialized. This can happen during early initialization errors, such as running the game without the required .pak files, causing the pointer to be nullptr and leading to a segmentation fault when accessed.
Solution:
Added a simple null check (com_noErrorInterrupt != NULL) before dereferencing the pointer in the debug-specific code block. This change preserves the original debug logic (the intentional breakpoint) while preventing a hard crash when the cvar is not yet available.
Important:
This fix only affects Win32 Debug builds (guarded by #if defined(_WIN32) && defined(_DEBUG)) and has zero impact on release builds or other platforms. The debug functionality remains fully intact when the cvar is properly initialized.
Root Cause:
The Com_Error function can be called during initial filesystem initialization (e.g., when no game data is found). Since com_noErrorInterrupt is initialized later as a cvar, its pointer is null at this early stage, causing a crash when the debug code attempts to check its value.