summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Roubinsky <chaosus89@gmail.com>2022-01-13 14:39:35 +0300
committerYuri Roubinsky <chaosus89@gmail.com>2022-01-13 15:12:35 +0300
commitb0356bcb72a4647699c8e9c7ab1370f563ef81bc (patch)
tree25c37763616334c7c05f199bff7089d5498bf9b6
parentdbab0a94877004d18f1cf51f11c56c3f9861fb12 (diff)
Prevent redefinition of main functions in shader
-rw-r--r--servers/rendering/shader_language.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index adbcdedacc..c4d9ba4260 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -8774,6 +8774,13 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
}
}
+ for (int i = 0; i < shader->functions.size(); i++) {
+ if (!shader->functions[i].callable && shader->functions[i].name == name) {
+ _set_error("Redefinition of '" + String(name) + "'");
+ return ERR_PARSE_ERROR;
+ }
+ }
+
ShaderNode::Function function;
function.callable = !p_functions.has(name);