From cda571268bf95789c1fc1044c284c4fe06bbc0e4 Mon Sep 17 00:00:00 2001 From: arbee Date: Sat, 13 Jun 2015 14:31:36 -0400 Subject: GLSL: unlimit shader file size. [R. Belmont] --- src/osd/modules/opengl/gl_shader_tool.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/osd/modules/opengl/gl_shader_tool.c') 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); -- cgit v1.2.3-70-g09d2 From 277bd7e759a00e404ccfbd089cedaf4cd68cfd41 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 15 Jun 2015 12:38:20 +1000 Subject: Fix off-by-one --- src/osd/modules/opengl/gl_shader_tool.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) (limited to 'src/osd/modules/opengl/gl_shader_tool.c') diff --git a/src/osd/modules/opengl/gl_shader_tool.c b/src/osd/modules/opengl/gl_shader_tool.c index 5d308882ed8..203869e308e 100644 --- a/src/osd/modules/opengl/gl_shader_tool.c +++ b/src/osd/modules/opengl/gl_shader_tool.c @@ -374,11 +374,6 @@ errout: int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shader_file, int verbose ) { - int err = 0, i, c; - FILE * file = NULL; - int buffer_len = 8192; - GLcharARB *buffer=NULL; - if(shader==NULL || shader_file==NULL) { if(shader==NULL) @@ -388,7 +383,7 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade return -1; } - file = fopen(shader_file, "r"); + FILE *const file = fopen(shader_file, "r"); if(!file) { osd_printf_warning("cannot open shader_file: %s\n", shader_file); @@ -397,23 +392,20 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade // get the real file size fseek(file, 0, SEEK_END); - buffer_len = (int)ftell(file); + int const buffer_len = (int)ftell(file); fseek(file, 0, SEEK_SET); - buffer = (GLcharARB *) malloc(buffer_len); - memset(buffer, 0, buffer_len); + GLcharARB *const buffer = (GLcharARB *)malloc(buffer_len + 1); + memset(buffer, 0, buffer_len + 1); - /* Load Shader Sources */ - i=0; - while( i