X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Ftokenizer.cpp;h=2fa1b64ae960be301874c872c60c67c70f23cd13;hp=0b18245f0e323e66c9c2eef6fb40ff19ba8307dc;hb=2016444ee144ce41f88c48e89c825137ad7e4ec2;hpb=49080e2c9359a3929e77817707ad7e8bf3f8a36d diff --git a/source/glsl/tokenizer.cpp b/source/glsl/tokenizer.cpp index 0b18245f..2fa1b64a 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=='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;