mirror of https://github.com/axmolengine/axmol.git
1. We should define `std::string ret` in where we really need it. According to my test on android platform the function returns at `return "";`, which makes the `ret` unnecessary.
2. `charsWritten` is not used, we should either delete it or use it. Because we don't check the bytes written, I think we can just delete it. 3. We don't need (logLength+1) space for `logBytes`, because `logBytes` returned by calling glGetShaderInfoLog(shader, logLength, nullptr, logBytes) takes `logLength` bytes at most, including the ending null character, i.e. `(strlen(logBytes) + 1 == logLength)` always yield true. According to the offical opengles sdk docs: https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderInfoLog.xml. and https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderiv.xml 4. We don't need `logBytes[logLength] = '\0';`, because `logBytes` returned is already null-terminated.
This commit is contained in:
parent
b85ccbbb4e
commit
341575aa4c
|
@ -571,17 +571,15 @@ void GLProgram::use()
|
||||||
|
|
||||||
static std::string logForOpenGLShader(GLuint shader)
|
static std::string logForOpenGLShader(GLuint shader)
|
||||||
{
|
{
|
||||||
std::string ret;
|
GLint logLength = 0;
|
||||||
GLint logLength = 0, charsWritten = 0;
|
|
||||||
|
|
||||||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
|
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
|
||||||
if (logLength < 1)
|
if (logLength < 1)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
char *logBytes = (char*)malloc(logLength + 1);
|
char *logBytes = (char*)malloc(sizeof(char) * logLength);
|
||||||
glGetShaderInfoLog(shader, logLength, &charsWritten, logBytes);
|
glGetShaderInfoLog(shader, logLength, nullptr, logBytes);
|
||||||
logBytes[logLength] = '\0';
|
std::string ret(logBytes);
|
||||||
ret = logBytes;
|
|
||||||
|
|
||||||
free(logBytes);
|
free(logBytes);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -589,17 +587,15 @@ static std::string logForOpenGLShader(GLuint shader)
|
||||||
|
|
||||||
static std::string logForOpenGLProgram(GLuint program)
|
static std::string logForOpenGLProgram(GLuint program)
|
||||||
{
|
{
|
||||||
std::string ret;
|
GLint logLength = 0;
|
||||||
GLint logLength = 0, charsWritten = 0;
|
|
||||||
|
|
||||||
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);
|
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);
|
||||||
if (logLength < 1)
|
if (logLength < 1)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
char *logBytes = (char*)malloc(logLength + 1);
|
char *logBytes = (char*)malloc(sizeof(char) * logLength);
|
||||||
glGetProgramInfoLog(program, logLength, &charsWritten, logBytes);
|
glGetProgramInfoLog(program, logLength, nullptr, logBytes);
|
||||||
logBytes[logLength] = '\0';
|
std::string ret(logBytes);
|
||||||
ret = logBytes;
|
|
||||||
|
|
||||||
free(logBytes);
|
free(logBytes);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue