Fix crash in Com_Error when com_noErrorInterrupt is nullptr#8
Open
Pomidor1638 wants to merge 1 commit intoid-Software:masterfrom
Open
Fix crash in Com_Error when com_noErrorInterrupt is nullptr#8Pomidor1638 wants to merge 1 commit intoid-Software:masterfrom
Pomidor1638 wants to merge 1 commit intoid-Software:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.