Commit a68b6112 by Nicolas Capens

Use an STL string for the shader info log.

Bug 19331817 Change-Id: I9ea2f823fafa54e598e79181aa39c3626d9dc4e8 Reviewed-on: https://swiftshader-review.googlesource.com/2291Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent 20b06c3c
......@@ -27,7 +27,6 @@ bool Shader::compilerInitialized = false;
Shader::Shader(ResourceManager *manager, GLuint handle) : mHandle(handle), mResourceManager(manager)
{
mSource = NULL;
mInfoLog = NULL;
clear();
......@@ -38,7 +37,6 @@ Shader::Shader(ResourceManager *manager, GLuint handle) : mHandle(handle), mReso
Shader::~Shader()
{
delete[] mSource;
delete[] mInfoLog;
}
GLuint Shader::getName() const
......@@ -88,29 +86,29 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
int Shader::getInfoLogLength() const
{
if(!mInfoLog)
if(infoLog.empty())
{
return 0;
}
else
{
return strlen(mInfoLog) + 1;
return infoLog.size() + 1;
}
}
void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog)
void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLogOut)
{
int index = 0;
if(bufSize > 0)
{
if(mInfoLog)
if(!infoLog.empty())
{
index = std::min(bufSize - 1, (int)strlen(mInfoLog));
memcpy(infoLog, mInfoLog, index);
index = std::min(bufSize - 1, (GLsizei)infoLog.size());
memcpy(infoLogOut, infoLog.c_str(), index);
}
infoLog[index] = '\0';
infoLogOut[index] = '\0';
}
if(length)
......@@ -181,8 +179,7 @@ TranslatorASM *Shader::createCompiler(GLenum shaderType)
void Shader::clear()
{
delete[] mInfoLog;
mInfoLog = NULL;
infoLog.clear();
varyings.clear();
activeUniforms.clear();
......@@ -221,10 +218,8 @@ void Shader::compile()
{
deleteShader();
int infoLogLen = compiler->getInfoSink().info.size() + 1;
mInfoLog = new char[infoLogLen];
strcpy(mInfoLog, compiler->getInfoSink().info.c_str());
TRACE("\n%s", mInfoLog);
infoLog = compiler->getInfoSink().info.c_str();
TRACE("\n%s", infoLog.c_str());
}
delete compiler;
......
......@@ -27,6 +27,7 @@
#define GL_GLEXT_PROTOTYPES
#include <GL/glext.h>
#include <string>
#include <list>
#include <vector>
......@@ -77,7 +78,7 @@ protected:
static bool compareVarying(const glsl::Varying &x, const glsl::Varying &y);
char *mSource;
char *mInfoLog;
std::string infoLog;
private:
virtual void createShader() = 0;
......
......@@ -27,7 +27,6 @@ bool Shader::compilerInitialized = false;
Shader::Shader(ResourceManager *manager, GLuint handle) : mHandle(handle), mResourceManager(manager)
{
mSource = NULL;
mInfoLog = NULL;
clear();
......@@ -38,7 +37,6 @@ Shader::Shader(ResourceManager *manager, GLuint handle) : mHandle(handle), mReso
Shader::~Shader()
{
delete[] mSource;
delete[] mInfoLog;
}
GLuint Shader::getName() const
......@@ -88,29 +86,29 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
int Shader::getInfoLogLength() const
{
if(!mInfoLog)
if(infoLog.empty())
{
return 0;
}
else
{
return strlen(mInfoLog) + 1;
return infoLog.size() + 1;
}
}
void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLog)
void Shader::getInfoLog(GLsizei bufSize, GLsizei *length, char *infoLogOut)
{
int index = 0;
if(bufSize > 0)
{
if(mInfoLog)
if(!infoLog.empty())
{
index = std::min(bufSize - 1, (int)strlen(mInfoLog));
memcpy(infoLog, mInfoLog, index);
index = std::min(bufSize - 1, (GLsizei)infoLog.size());
memcpy(infoLogOut, infoLog.c_str(), index);
}
infoLog[index] = '\0';
infoLogOut[index] = '\0';
}
if(length)
......@@ -181,8 +179,7 @@ TranslatorASM *Shader::createCompiler(GLenum shaderType)
void Shader::clear()
{
delete[] mInfoLog;
mInfoLog = NULL;
infoLog.clear();
varyings.clear();
activeUniforms.clear();
......@@ -221,10 +218,8 @@ void Shader::compile()
{
deleteShader();
int infoLogLen = compiler->getInfoSink().info.size() + 1;
mInfoLog = new char[infoLogLen];
strcpy(mInfoLog, compiler->getInfoSink().info.c_str());
TRACE("\n%s", mInfoLog);
infoLog = compiler->getInfoSink().info.c_str();
TRACE("\n%s", infoLog.c_str());
}
delete compiler;
......
......@@ -24,6 +24,7 @@
#define GL_APICALL
#include <GLES2/gl2.h>
#include <string>
#include <list>
#include <vector>
......@@ -74,7 +75,7 @@ protected:
static bool compareVarying(const glsl::Varying &x, const glsl::Varying &y);
char *mSource;
char *mInfoLog;
std::string infoLog;
private:
virtual void createShader() = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment