diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 3f6f99938f..520512b6f3 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -546,12 +546,12 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { if (hexa_found || str.length() != 1 || str[0] != '0') return _make_token(TK_ERROR, "Invalid numeric constant"); hexa_found = true; - } else if (GETCHAR(i) == 'e') { - if (hexa_found || exponent_found || float_suffix_found) + } else if (GETCHAR(i) == 'e' && !hexa_found) { + if (exponent_found || float_suffix_found) return _make_token(TK_ERROR, "Invalid numeric constant"); exponent_found = true; - } else if (GETCHAR(i) == 'f') { - if (hexa_found || exponent_found) + } else if (GETCHAR(i) == 'f' && !hexa_found) { + if (exponent_found) return _make_token(TK_ERROR, "Invalid numeric constant"); float_suffix_found = true; } else if (_is_number(GETCHAR(i))) {