summaryrefslogtreecommitdiff
path: root/servers/rendering
diff options
context:
space:
mode:
authorYuri Rubinsky <chaosus89@gmail.com>2022-06-10 12:57:57 +0300
committerGitHub <noreply@github.com>2022-06-10 12:57:57 +0300
commitcb7d5723b49679e3c4f203fd2bd0bb444df364ad (patch)
tree5a8a07ef67ea0f3fead32943f796cf680efafd62 /servers/rendering
parentefcf0d88e47f6c0dc18746da46bba70b3bfa1f2c (diff)
parentc9ae83b5ab01e3f84bfa27226e9407b98883961c (diff)
Merge pull request #61881 from Chaosus/shader_fix_float_suffixes
Diffstat (limited to 'servers/rendering')
-rw-r--r--servers/rendering/shader_language.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index fe3d1e03b6..f9469fcae0 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -613,12 +613,16 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
String str;
int i = 0;
+ bool digit_after_exp = false;
while (true) {
const char32_t symbol = String::char_lowercase(GETCHAR(i));
bool error = false;
if (is_digit(symbol)) {
+ if (exponent_found) {
+ digit_after_exp = true;
+ }
if (end_suffix_found) {
error = true;
}
@@ -683,7 +687,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
return _make_token(TK_ERROR, "Invalid (hexadecimal) numeric constant");
}
} else if (period_found || exponent_found || float_suffix_found) { // Float
- if (exponent_found && (!is_digit(last_char) && last_char != 'f')) { // checks for eg: "2E", "2E-", "2E+"
+ if (exponent_found && (!digit_after_exp || (!is_digit(last_char) && last_char != 'f'))) { // Checks for eg: "2E", "2E-", "2E+" and 0ef, 0e+f, 0.0ef, 0.0e-f (exponent without digit after it).
return _make_token(TK_ERROR, "Invalid (float) numeric constant");
}
if (period_found) {