Fix editor crash when shader has incorrect global array declaration #90792
+6
−1
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.
Trying to fix #90683
The crash happens around the change in
shader_compiler.cpp
, in that condition,cnode->array_declarations[0].initializer
has size 0 and thus usei=1
to index it will crash the editor. I leave it as a safe guard there.Note that
const bool array[1] = bool[];;
will cause the crash butconst bool array[1] = bool[];
won't (just triggerExpected a ',' or ';'
), the changes I made inshader_language.cpp
prevent this by simply don't allow a global const array to be defined without initialization, I checked the doc it didn't say whether it's legal or not, so it might not be a good idea. Feel free to correct me.