2
0
Эх сурвалжийг харах

Fix parsing hexadecimal (lowercase `e`,`f`) in shaders

(cherry picked from commit 19e0a1ec9dce4d0a550a944bbd77f0db427dec78)
Yuri Roubinsky 4 жил өмнө
parent
commit
29616f4a35

+ 4 - 4
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))) {