diff --git a/src/osd/modules/opengl/gl_shader_tool.c b/src/osd/modules/opengl/gl_shader_tool.c index abf1420f77a..5d308882ed8 100644 --- a/src/osd/modules/opengl/gl_shader_tool.c +++ b/src/osd/modules/opengl/gl_shader_tool.c @@ -376,7 +376,7 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade { int err = 0, i, c; FILE * file = NULL; - const int buffer_len=8192; + int buffer_len = 8192; GLcharARB *buffer=NULL; if(shader==NULL || shader_file==NULL) @@ -395,6 +395,11 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade return -1; } + // get the real file size + fseek(file, 0, SEEK_END); + buffer_len = (int)ftell(file); + fseek(file, 0, SEEK_SET); + buffer = (GLcharARB *) malloc(buffer_len); memset(buffer, 0, buffer_len);