]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.cpp
Fix an incorrect loop in UnusedVariableRemover
[libs/gl.git] / source / glsl / optimize.cpp
index ed20bb175dcc9277e1ff84e2e1a1734b2279668f..55e5da5fddeec0896cbd52b087a87bf928da305d 100644 (file)
@@ -646,8 +646,8 @@ void ConstantFolder::visit(RefPtr<Expression> &expr)
                literal->token = lexical_cast<string>(r_constant_value.value<unsigned>())+"u";
        else if(r_constant_value.check_type<float>())
        {
-               literal->token = lexical_cast<string>(r_constant_value.value<float>());
-               if(isnumrc(literal->token))
+               literal->token = lexical_cast<string>(r_constant_value.value<float>(), Fmt().precision(8));
+               if(literal->token.find('.')==string::npos && literal->token.find('e')==string::npos)
                        literal->token += ".0";
        }
        else
@@ -1263,7 +1263,7 @@ void UnusedVariableRemover::record_assignment(const Assignment::Target &target,
        /* An assignment to the target hides any assignments to the same target or
        its subfields. */
        VariableInfo &var_info = variables[target.declaration];
-       for(unsigned i=0; i<var_info.assignments.size(); ++i)
+       for(unsigned i=0; i<var_info.assignments.size(); )
        {
                const Assignment::Target &t = var_info.assignments[i]->target;