<div dir="ltr">Robert,<div>I was trying to use the pragmatic shader comp in OSG 3.4 and ran into the following bug.</div><div><br></div><div>osg::Shader attempts to extract the "#version" string and insert the new #define statements between the #version line and the rest of the source. However, if the #version line ends in a CRLF combination (\r\n), the LF is stripped and never replaced -- this causes the NVIDIA driver to report an illegal version string.</div><div><br></div><div>I was able to fix it by checking for a LF and appending it if it's missing.</div><div><br></div><div>In Shader::PerContextShader::compileShader, I inserted this line:</div><div><br></div><div><div>if ((end_of_line-start_of_line)>=8 && source.compare(start_of_line, 8, "#version")==0)</div><div>{</div><div>    versionLine = source.substr(start_of_line, end_of_line-start_of_line+1);</div><div>    if (versionLine.back() != '\n') versionLine.push_back('\n');    // FIX BY INSERTING THIS LINE</div><div>    if (source[source.size()-1]!='\n') source.push_back('\n');</div></div><div>    ....</div><div><br></div><div>Let me know if you think this fix makes sense to put in the master. Thanks.</div><div> <br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>Glenn Waldron</div></div></div></div>
</div></div>