浏览代码

REVIEWED: LoadShaderProgram() #1563

Try to avoid a possible false-positive memory leak...
raysan5 4 年之前
父节点
当前提交
005bc4c414
共有 1 个文件被更改,包括 9 次插入15 次删除
  1. 9 15
      src/rlgl.h

+ 9 - 15
src/rlgl.h

@@ -3639,7 +3639,6 @@ TextureCubemap GenTexturePrefilter(Shader shader, TextureCubemap cubemap, int si
 
 
     // Generate mipmaps for the prefiltered HDR texture
     // Generate mipmaps for the prefiltered HDR texture
     glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
     glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
-    //rlGenerateMipmaps(Texture2D *texture); // Only GL_TEXTURE_2D
 
 
     // STEP 2: Draw to framebuffer
     // STEP 2: Draw to framebuffer
     //------------------------------------------------------------------------------------------
     //------------------------------------------------------------------------------------------
@@ -4113,22 +4112,17 @@ static unsigned int LoadShaderProgram(unsigned int vShaderId, unsigned int fShad
         TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to link shader program", program);
         TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to link shader program", program);
 
 
         int maxLength = 0;
         int maxLength = 0;
-        int length;
-
         glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength);
         glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength);
+        
+        if (maxLength > 0) 
+        {
+            int length;
+            char *log = RL_CALLOC(maxLength, sizeof(char));
+            glGetProgramInfoLog(program, maxLength, &length, log);
+            TRACELOG(LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log);
+            RL_FREE(log);
+        }
 
 
-#if defined(_MSC_VER)
-        char *log = RL_MALLOC(maxLength);
-#else
-        char log[maxLength];
-#endif
-        glGetProgramInfoLog(program, maxLength, &length, log);
-
-        TRACELOG(LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log);
-
-#if defined(_MSC_VER)
-        RL_FREE(log);
-#endif
         glDeleteProgram(program);
         glDeleteProgram(program);
 
 
         program = 0;
         program = 0;