X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Ftokenizer.cpp;h=bd455e3cb200408128534b6e9a235198e6d08807;hb=69bf91a6b169934f2853538580f46ffa8bde1109;hp=0b18245f0e323e66c9c2eef6fb40ff19ba8307dc;hpb=e195322eb1251f2eb0d6dfb8c2dc0fff02e5fcfc;p=libs%2Fgl.git diff --git a/source/glsl/tokenizer.cpp b/source/glsl/tokenizer.cpp index 0b18245f..bd455e3c 100644 --- a/source/glsl/tokenizer.cpp +++ b/source/glsl/tokenizer.cpp @@ -136,7 +136,9 @@ string Tokenizer::parse_number() } bool require_digit = false; - if(iter!=source_end && (*iter=='e' || *iter=='E')) + if(iter==source_end) + ; + else if(*iter=='e' || *iter=='E') { number += *iter++; if(iter!=source_end && (*iter=='-' || *iter=='+')) @@ -152,11 +154,15 @@ string Tokenizer::parse_number() else break; } + if(!require_digit && iter!=source_end && *iter=='f') + number += *iter++; } + else if(*iter=='u' || *iter=='f') + number += *iter++; if(require_digit) throw syntax_error(location, number, "Incomplete numeric literal"); - else if(isalnum(*iter) || *iter=='_') + else if(iter!=source_end && (isalnum(*iter) || *iter=='_')) throw syntax_error(location, number, "Garbage at end of numeric literal"); return number;